CI jenkins mattermost nodejs

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(1)

投稿日:2019年5月2日

目的

ionicやNode.jsアプリが依存するライブラリにライセンス違反が無いか自動的にチェック、GPLやAGPLが入ってしまっていないか直ぐ分かるようにします。

使用するnpmモジュール

bower時代は「bower-license」が同目的で使えるモジュールでしたがnpm一本化の流れになってからは「license-checker」を使っています。

npm install -g license-cheker

ライセンスを表示してみる

サマリで出す

package.jsonがあるプロジェクトルートに入り、以下コマンドで開発時依存を抜いた本番環境に乗るライブラリのサマリを取れます。

$ license-checker --production --summary
├─ MIT: 129
├─ Apache-2.0: 20
├─ ISC: 11
├─ MIT*: 4
├─ BSD: 4
├─ Unlicense: 2
├─ BSD-3-Clause: 2
├─ Apache*: 2
├─ UNKNOWN: 1
├─ LGPL: 1
├─ BSD-3-Clause OR MIT: 1
├─ BSD*: 1
└─ Apache: 1

CSVファイルで出す

1プロダクト毎にライセンス表示が必要な場合に重宝します。

$ license-checker --production --csv --out ./license.csv

$ head ./license.csv
"module name","license","repository"
"@angular/animations@4.4.4","MIT","https://github.com/angular/angular"
"@angular/common@4.4.4","MIT","https://github.com/angular/angular"
"@angular/compiler-cli@4.4.4","MIT","https://github.com/angular/angular"
"@angular/compiler@4.4.4","MIT","https://github.com/angular/angular"
"@angular/core@4.4.4","MIT","https://github.com/angular/angular"
"@angular/forms@4.4.4","MIT","https://github.com/angular/angular"
"@angular/http@4.4.4","MIT","https://github.com/angular/angular"
"@angular/platform-browser-dynamic@4.4.4","MIT","https://github.com/angular/angular"
"@angular/platform-browser@4.4.4","MIT","https://github.com/angular/angular"

まとめ

ライセンス条項を入れておきさえすれば使って怒られそうなものは見当たりませんでした。次回はJenkinsで自動化し、意にそぐわないライセンスがあれば通知させるようにします。

-CI, jenkins, mattermost, nodejs

執筆者:

関連記事

mkcertとhttp-serverでHTTPS環境を作りAndroid(chrome)、iPhone(safari)から接続

簡単にパーフェクトなオレオレ証明書が作れるとgithub上で人気上昇中の「mkcert」。 GitHub  135 UsersFiloSottile/mkcerthttps://github …

社内プライベートMattermostを立ち上げてChatOpsする

社内開発チーム内のコミュニケーション、上手く行っていますか?メンバーが世界各地に散らばってないなくても、近くの席に座っていても、心は意外と離れているかも知れません。 以下でプライベートなGitLab1 …

ブラウザから起動したカメラの撮影画像をjavascriptで圧縮【Compressor.js】

「モバイル用Webアプリで撮影したカメラ画像のファイルサイズが大きすぎる・・・」 そんな悩みは無いですか? 昨今カメラ会社の経営が傾くほどスマホのカメラ性能が向上、それに応じて年々ファイルサイズも増大 …

Angular4.4のHTTP通信処理にタイムアウトを設定をすると「timeout is not a function」エラーが発生する

目次1 事象2 原因3 対処4 まとめ 事象 Angular4.3で追加されたHttpClientModuleに移行せず、HttpModuleを使い続けているアプリで、とある理由からpackage-l …

Mac、Linux、Windows(WSL無し環境)でNode.jsバージョン切り替え方法を統一したい

一時期ローカルPCにインストールされたNode.jsのバージョンを切り替えるツールが乱立してどれを選べばいいの状態で、当然オプションも違うのでOSによって違うツールが入っているとオプションを覚えるのが …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。