インストールされているすべてのnode.jsモジュールのリストを印刷します


134

私が取り組んでいるnode.jsスクリプトで、(npmを使用してインストールされた)すべてのnode.jsモジュールをコマンドラインに出力します。これどうやってするの?

console.log(__filename);

//now I want to print all installed modules to the command line. How can I do this?

この場合、node.jsモジュールフォルダーのパスを返す関数を作成すると便利です(可能な場合)。クロスプラットフォームのソリューションが理想的です。
— アンダーソン・グリーン

ディレクトリからのファイルのリストの取得に関する情報:stackoverflow.com/questions/2727167/…
— アンダーソングリーン

回答:


100

npm lsを使用します(json出力もあります)

スクリプトから:

test.js:

function npmls(cb) {
  require('child_process').exec('npm ls --json', function(err, stdout, stderr) {
    if (err) return cb(err)
    cb(null, JSON.parse(stdout));
  });
}
npmls(console.log);

実行:

> node test.js
null { name: 'x11', version: '0.0.11' }

また、モジュールフォルダーのファイルパスを取得するにはどうすればよいですか?
— アンダーソングリーン

パスはnode_modules / [モジュール名]になります。これはすべてのプラットフォームで機能するはずです。この方法では、「ローカル」モジュールツリーのみが出力され、requre最初にnode_modules、次に../node_modules、../../node_modules(nodejs.org/api/…を参照)、次にNODE_PATH env var
— Andreyが

4
npm ls --parseableパスのリストだけを試してください
— Andrey Sidorov

262

完全なツリーなしでグローバルにインストールされたパッケージのみに関心がある場合:

npm -g ls --depth=0

またはローカルで(-gを省略):

npm ls --depth=0


6
--lまたは--longも指定するのが好きnpm -g ls --depth=0 --longです。これにより、モジュールの説明とgithubリンクが提供されます。
— Adam Caviness、2015年

好きならばnpm ls、完全な例は、このアウトをチェック:stackoverflow.com/questions/17937960/...
— prosti

48

グローバルにインストールされたすべてのサードパーティモジュールのリスト。コンソールに書き込みます。

 npm -g ls


9

通常、インストールされているパッケージを一覧表示するには、コマンドラインインターフェイス(CLI)を使用する方法と、アプリケーションを使用してAPIを使用する方法の2つがあります。

どちらのコマンドstdoutも、インストールされているパッケージのすべてのバージョンとその依存関係をツリー構造で出力します。


CLI

npm list

-g(グローバル)フラグを使用して、グローバルにインストールされたすべてのパッケージを一覧表示します。--depth=0フラグを使用して、上位のパッケージのみをリストし、それらの依存関係はリストしません。


API

あなたのケースでは、これをスクリプト内で実行したいので、APIを使用する必要があります。ドキュメントから:

npm.commands.ls(args, [silent,] callback)

へstdoutの出力に加えて、データはコールバックにも渡されます。


npmにアプリケーションからアクセス可能なAPIがあることを指定していただきありがとうございます。どのように関数に引数を渡しますか?試しましたnpm.commands.ls(["depth=0"], ... )が、エラーが発生しnpm.commands.ls(["prod"], ... )、空の配列が表示されます...
— Giuliano Collacchioni

6

それらをつかむないのはなぜdependenciesでpackage.json?

もちろん、これは実際に保存したものだけを提供しますが、とにかくそうするべきです。

console.log(Object.keys(require('./package.json').dependencies));

これは、パッケージがグローバルにインストールされることを意味しません
— Owen J Lamb

元の質問では、グローバルにインストールされたパッケージを含めるかどうかは指定されていません。この回答は、他の回答に役立つ代替手段を提供します。
— アンディフレミング2017

3
for package in `sudo npm -g ls --depth=0 --parseable`; do
    printf "${package##*/}\n";
done

1
ええ、私のすべてのバッシュは、今日持っている$()
— AT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.