One IT Thing

IT業界で飯を食う為の学習系雑記

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

執筆者:

関連記事

Typescript3.0以下の環境で発生する「Cannot find name ‘unknown’」に対処する

目次1 事象2 原因3 対処4 まとめ 事象 Typescript2.3.4を使っている息の長いWebシステムでnpm installをし直し、tscビルドし直したらトランスパイルエラーが発生。「un …

Omnibus版のGitLab、Mattermostデータベースに外部ホストからJDBCで接続

Omnibusで入れたPostgreSQLは、 Unix Domainソケットで接続待機Peer認証で認証 していて外部からの接続は出来ないことが前回分かりました。 One IT Thing …

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

目次1 目的1.1 動作イメージ2 Jenkinsジョブを設定2.1 前提2.2 Jenkins「シェルの実行」を設定2.3 想定外ライセンスが含まれていた場合の通知3 まとめ 目的 前回の続き。&n …

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

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

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

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

 

shingo.7k24
 

東京在勤、職歴20年越え中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけどフリーランスで孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。