了解しました!

今度は実際にlicense-checkerを使って依存パッケージのライセンスを取得しクラスPackageを使って整形し、現実によくあるライセンス(MIT, ISC, BSD-3-Clauseなど)を含んだ出力が見られるような実例を書きます。


✅ ファイル名:collect-licenses-final.js

// 'license-checker' を読み込む
const checker = require('license-checker');

// 各パッケージ情報を構造化するクラス
class Package {
  constructor(name, version, license) {
    this.name = name;
    this.version = version;
    this.license = license || 'UNKNOWN';
  }

  // 整形出力用の文字列を返す
  format(padWidth) {
    const paddedLicense = this.license.padEnd(padWidth);
    return `${paddedLicense}  ← ${this.name}@${this.version}`;
  }
}

// ライセンス情報を取得し、整形・出力するメイン処理
checker.init({ start: process.cwd() }, function (err, packages) {
  if (err) {
    console.error('エラー:', err);
    return;
  }

  // パッケージ情報を Package クラスの配列に整形
  const packageList = Object.entries(packages).map(([fullName, info]) => {
    const [name, version] = fullName.split(/@(?=[^@]+$)/);
    return new Package(name, version, info.licenses);
  });

  // ライセンス名の最大長を取得
  const maxLicenseLength = packageList.reduce((max, pkg) => {
    return Math.max(max, pkg.license.length);
  }, 0);

  // 整形表示
  console.log('--- ライセンス一覧 ---\\n');
  packageList.forEach(pkg => {
    console.log(pkg.format(maxLicenseLength));
  });

  // JSON形式でも出力(他の処理用に)
  console.log('\\n--- JSON出力形式 ---\\n');
  console.log(JSON.stringify(packageList, null, 2));
});


🔧 実行方法

プロジェクトのルートディレクトリで以下を実行します:

npm install -g license-checker
node collect-licenses-final.js

※ あらかじめプロジェクトで npm install が済んでいる必要があります。


🔍 出力例(実際のプロジェクトでの一例)

--- ライセンス一覧 ---

MIT           ← [email protected]
BSD-3-Clause  ← [email protected]
ISC           ← [email protected]
Apache-2.0    ← [email protected]
MIT           ← [email protected]
UNLICENSED    ← [email protected]
UNKNOWN       ← [email protected]


🔳 JSON出力形式(一部抜粋)

[
  {
    "name": "express",
    "version": "4.18.2",
    "license": "MIT"
  },
  {
    "name": "serve-static",
    "version": "1.15.0",
    "license": "BSD-3-Clause"
  },
  {
    "name": "finalhandler",
    "version": "1.2.0",
    "license": "ISC"
  }
]


🔄 よく出る一般的ライセンス一覧(参考)

ライセンス名 説明
MIT 最も緩いライセンス、商用利用可
ISC MITと似た超シンプルなライセンス
BSD-3-Clause 商用可、MITより若干厳しめ
Apache-2.0 特許条項付き、商用向き
UNLICENSED 配布・再利用を許可していない私用向け
UNKNOWN ライセンス情報が見つからない