はい、license-checker
がライセンス情報を 「機械的に読み取る」際の内部的な挙動について、ステップバイステップで詳しく解説します。
license-checker
は、各パッケージのpackage.json
とライセンスファイル(LICENSEなど)を対象に、自動的にライセンス情報を抽出します。
基本的には ルールベースの静的解析であり、「こう書かれていればこのライセンス」と判断します。
以下は、license-checker
が各パッケージのライセンスを特定するために実行する処理の大まかな手順です:
node_modules
内の全パッケージを列挙license-checker
は、プロジェクトの node_modules/
ディレクトリを再帰的に走査します。package.json
を読み込みます。const packageJson = require('/path/to/node_modules/<package>/package.json');
package.json
の license
フィールドを参照"license": "MIT"
"license": "(MIT OR GPL-3.0)"
licenses
という配列形式にも対応しています(旧形式):