61

npm (またはその他のツール) に、使用されているすべてのライセンスを印刷するオプションはありますか? 私はプロジェクトを持っており、使用できないライセンスの下にあるライブラリを使用しないようにしたいと考えています。

編集:多くの開発者がpackage.jsonにライセンスを含めていないことがわかったので、「npm docs package-name」を使用して手動で調べる必要がありました

4

10 に答える 10

64

私はまったく同じ要件を持っていたので、これを行うノード モジュールを作成しました。恥知らずな自己宣伝であることは承知していますが、これはオープン ソースであり、問​​題の解決に役立つことを願っています。問題や提案があればお知らせください。

他の回答との違いは、package.json ライセンス宣言を使用するだけでなく、プロジェクトのライセンス ファイルと readme ファイルで潜在的なライセンス情報を検索することです。

https://npmjs.org/package/nlf

を使用してインストールできますnpm install -g nlf

于 2013-07-16T13:32:03.727 に答える
22
cd {project}/node_modules
ls | sed 's/$/\/package.json/' | xargs grep '"license[s]*"' -A 3

いくつかの改善を使用できますが、動作します (少なくとも osx では動作し、Linux では動作するはずですが、Windows についてはわかりません)。次のように表示されます。

grunt/package.json:  "licenses": [
grunt/package.json-    {
grunt/package.json-      "type": "MIT",
grunt/package.json-      "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT"
--
grunt-contrib-concat/package.json:  "licenses": [
grunt-contrib-concat/package.json-    {
grunt-contrib-concat/package.json-      "type": "MIT",
grunt-contrib-concat/package.json-      "url": "https://github.com/gruntjs/grunt-contrib-concat/blob/master/LICENSE-MIT"
--

アップデート:

他のモジュール内にネストされているものであっても、すべてのモジュールの名前を表示したい場合は、次のように動作します (@robertklep への信頼、node_modules ディレクトリ内でも動作するようにわずかに変更されています)。

find * -name package.json | xargs grep '"license[s]*"' -A 3
于 2013-04-29T09:54:27.443 に答える
10

大規模なプロジェクトでこれを行ったところ、このプロセスを完全に自動化することは、あなたが思っているよりも頭の痛い問題であることがわかりました。ここにリストされているいくつかのトリックを使用してそれらの多くを取得するのは簡単ですが、NPM パッケージ ライセンスは一貫して公開されておらず、表示される場合があります。

  • NPM package.json ファイル内、または
  • README ファイル (「MIT ライセンス」のような名前だけの場合もあれば、セクションに完全なライセンス テキストがある場合もあります)、または
  • 別の LICENSE または COPYING ファイル。

さらに、よく知られているどのオープン ソース ライセンスに対応するかを判断するために、ライセンスを読まなければならない場合もあります。

これを行うために私が知っている最良のツールは、(ここでの他の回答のいくつかとは異なり) これらすべてのケースをカバーするlicensecheckパッケージです: https://github.com/marcello3d/node-licensecheck

一般的なライセンス ファイルと同様に package.json を調べ、既知のライセンスに対して署名を照合するため、より多くのライセンスを自動的に正確に認識します。また、ライセンスの標準 SPDX リスト ( https://spdx.org/licenses/ )に対してライセンスを「正規化」します。

最後に、Licensecheck を使用すると、手動で検証するために必要な残りのパッケージを独自の license.json ファイルに保存することもできます (外部のメンテナーにパッケージの変更を任せることはできないため)。

まとめると、これはかなり堅牢なソリューションです。

于 2014-09-24T02:02:48.377 に答える
2

Linux ベースのシステムでこれを試すことができます。

npm list -g --depth=0 | awk '{print $2}' | xargs -i npm view {} | grep license

次のようなものがあります。

  license: 'MIT',
  license: 'MIT',
  license: 'MIT',
  license: 'BSD',
  license: 'MIT',
  license: 'MIT',
  license: 'BSD-2-Clause',
  license: 'MIT',
  .....................
  .....................
  .....................
  license: 'BSD-2-Clause',
于 2016-11-28T18:19:36.217 に答える
0

Atom を使用している場合は、からライセンスを取得するためのnpm-license-checkerpackage.jsonがあります。

于 2016-04-10T21:58:56.250 に答える