個人のWebサイトを作っている中で、依存パッケージのライセンス一覧が見たくなったので、良い感じに出力してくれるライブラリがないか調べてみた。 調べてみると、いろいろな言語で実装されていたり、GitHubやMicrosoftが提供しているライブラリ[1][2]が出てきたので、今回はその中でもStar数が多いlicense-checkerを使ってみる。
今回は個人開発のプロジェクト横断で利用したいので、グローバルにインストールする。
$ npm install -g license-checker
対象のプロジェクト配下でコマンドを実行すると、依存パッケージごとのライセンス一覧を取得してくれる。
$ license-checker ├─ @babel/code-frame@7.22.5 │ ├─ licenses: MIT │ ├─ repository: https://github.com/babel/babel │ ├─ publisher: The Babel Team │ ├─ url: https://babel.dev/team │ ├─ path: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/code-frame │ └─ licenseFile: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/code-frame/LICENSE ├─ @babel/compat-data@7.22.5 │ ├─ licenses: MIT │ ├─ repository: https://github.com/babel/babel │ ├─ publisher: The Babel Team │ ├─ url: https://babel.dev/team │ ├─ path: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/compat-data │ └─ licenseFile: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/compat-data/LICENSE ├─ @babel/core@7.22.5 │ ├─ licenses: MIT │ ├─ repository: https://github.com/babel/babel │ ├─ publisher: The Babel Team │ ├─ url: https://babel.dev/team │ ├─ path: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/core │ └─ licenseFile: /Users/daisuzz/repository/daisuzz/web/node_modules/@babel/core/LICENSE (省略)
いろいろなオプションが用意されていて--summary
オプションをつけると、ライセンスごとのパッケージ数を表示してくれるため、どのライセンスのパッケージが含まれているか簡単に確認することができる。
$ license-checker --summary ├─ MIT: 1339 ├─ ISC: 120 ├─ Apache-2.0: 59 ├─ BSD-3-Clause: 47 ├─ BSD-2-Clause: 33 ├─ Unlicense: 4 ├─ (MIT OR CC0-1.0): 4 ├─ MIT*: 2 ├─ BlueOak-1.0.0: 2 ├─ CC0-1.0: 2 ├─ 0BSD: 2 ├─ OFL-1.1: 1 ├─ Python-2.0: 1 ├─ MPL-2.0: 1 ├─ CC-BY-4.0: 1 ├─ UNLICENSED: 1 ├─ Public Domain: 1 ├─ (MIT OR WTFPL): 1 ├─ (AFL-2.1 OR BSD-3-Clause): 1 ├─ (BSD-3-Clause OR GPL-2.0): 1 ├─ WTFPL: 1 └─ (BSD-2-Clause OR MIT OR Apache-2.0): 1
また--csv
や--json
オプションをつけるとそれぞれCSV形式やJSON形式で出力してくれるので、jqを使って出力形式を加工したり、SpreadSheetを使ってライセンス一覧を見ることも簡単にできる。