yarnバージョン:v1.3.2
yarnには全依存パッケージのライセンス条項文を出力するというnpmには無い機能があります。
yarn licenses generate-disclaimer
普段の開発では使い所は無いですが、electron等で作ったアプリを配布時、ライセンスファイルを添付する際に便利です。
出力自体は上のコマンドでいけるものの、保存はどうするのか気になってましたが、標準出力なのでnode.jsだと以下のような感じで内容を保存することができます。
license-output.js
const exec = require('child_process').exec;
const fs = require('fs');
const outputFilePath = "THIRD_PARTY_LICENSES.txt";
exec('yarn licenses generate-disclaimer --ignore-platform --ignore-optional --ignore-engines', {maxBuffer: 400*1024}, (err, stdout, stderr)=> {
if (err || stderr) {
console.log("execエラー");
throw err || stderr;
};
fs.writeFile(outputFilePath, stdout, (err)=> {
if (err) {
console.log("書き込みエラー");
throw err;
} else {
console.log("完了!")
}
})
});
実行
node license-output
※ バッファオーバーエラーを防ぐため、オプションでmaxBufferの上限を上げてます。文書量に応じて適宜変えて下さい。
※ --ignore-なんちゃらのオプションは、冒頭に"info: ...The platform "win32" is incompatible with this module."みたいなエラー文が入ってしまうのを防ぐためにつけてます。