daisuzz.log

npmでインストールした依存パッケージのライセンスを調べたい

個人のWebサイトを作っている中で、依存パッケージのライセンス一覧が見たくなったので、良い感じに出力してくれるライブラリがないか調べてみた。 調べてみると、いろいろな言語で実装されていたり、GitHubMicrosoftが提供しているライブラリ[1][2]が出てきたので、今回はその中でもStar数が多いlicense-checkerを使ってみる。

github.com

今回は個人開発のプロジェクト横断で利用したいので、グローバルにインストールする。

$ 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を使ってライセンス一覧を見ることも簡単にできる。

参考