はじめに
これまで依存関係にあるパッケージ等のライセンスを取得してくれるGitHub製のlicensedやこの他にも様々なライセンスチェッカーが開発されてきました。
特にlicensedはカバーされる範囲も広く個人的にかなり正確に取得してくれると感じていますが利用手順が多いということも挙げられます。
今回、3つの手順だけでこのようなライセンスチェック機能に加えライセンス遵守のためにするべきことを一つのテキストファイルにまとめて教えてくれるnpmパッケージを開発しました。(npmのみ対応)
doppelganger-license
今回開発したパッケージをdoppelganger-licenseと名付けました。
詳細はGitHub Repoに記載しています。
doppelganger-licenseは先述した通り、依存関係にあるライセンスを取得しライセンス遵守のためにすべきことを具体的に教えてくれます。
これらの機能は全てプロジェクトファイル内のpackage-lock.jsonに基づいています。
手順としては
1. doppelganger-licenseのインストール
$ npm install doppelganger-license
2. dependencies.txtとmemo.txtをお好きな場所に作成
dependencies.txtにライセンス条項が自動出力され、memo.txtにやることリストが出力されます。
3. doppelganger-licenseを実行
$ doppelganger-license
package-lock.json, dependencies.txt, memo.txtのパスが質問されるのでそれぞれ答えてください
以上の3手順で利用できます。
デモ動画はレポジトリでご確認いただけます。
仕組み
仕組みはそこまで複雑ではなく
package-lock.jsonのdependenciesにあるパッケージの名前・バージョンをfsを用いて抽出
↓
node-fetch経由でregistry.npmjs.orgにてパッケージのライセンスを取得
↓
node-fetch経由でjsdelivrにてパッケージのライセンス条項を取得
↓
取得したライセンス条項をfsを用いてdependencies.txtに出力
↓
コピーレフトライセンスを発見した場合はそのライセンスの条件をmemo.txtに出力
という流れです。
今後の発展予定
現時点でライセンス間の矛盾などは考慮できておらず、一部のコピーレフトライセンスは検出できない場合がありまだまだ改善の余地はあるという状態です。
バグの修正や改善点の報告・要望などは早くお応えできるかと思いますので、よろしければGitHub Repoにてご報告いただけますと幸いです。よろしくお願いいたします。