Node.js と npm 再入門(その4:便利コマンド)

はてなブックマーク
2018/03/30 15:32:32

前回、「Node.js と npm 再入門(その3:npm-scripts)」の続きです。今回は npm にたくさんあるコマンドのうち、便利そうなコマンドを紹介します。

npm ci コマンド

npm install コマンドではパッケージの依存関係などを確認しパッケージがインストールされていましたが、 テストプラットフォーム、継続的な統合(CI)、デプロイメントなどの自動化された環境では、 それらの処理が不要であるばかりか、それらの処理が原因で予期せぬ動作をしたりすることがあります。 そこで npm install コマンドからそれらの処理を排除し、大幅に高速化したのがこの npm ci コマンドです。

主な動作の違いとしては、node_modules ディレクトリの内容が一旦削除されることと、 package.json ファイルおよび package-lock.json ファイルが更新されないことです。

普段の開発時などでは npm install コマンドを使用し、CI などの自動化環境では npm ci コマンドを使用するといった感じで、使い分けるのが良いでしょう。

参考サイト

npm prune コマンド

パッケージをインストールする際に、--no-save オプションをつけて行ったりすると、 package.json に記載されたパッケージの一覧と、実際にインストールされているパッケージが食い違うという状況になってしまいます。 お試しでたくさんパッケージをインストールしてしまったときなど、個別にアンインストールしていくのは面倒です。 npm prune コマンドは、package.json ファイルに記載されていない無関係なパッケージを全て削除してくれます。

npm prune
# package.json の devDependencies に指定されたパッケージも削除する場合
npm prune --production

参考サイト

npm cache コマンド

npm で何かエラー等の問題があった場合、npm のキャッシュが原因となっている可能性があります。 しかし npm のキャッシュは壊れているかどうか常に確認されているため、ディスクの容量を増やす以外の理由でキャッシュをクリアする必要はありません

npm cache verify コマンド

もし、キャッシュが壊れている可能性が高い場合は、まず npm cache verify コマンドを使用しましょう。 キャッシュフォルダの内容を確認し、不要なデータをガベージコレクションし、キャッシュインデックスとすべてのキャッシュデータの整合性を確認してくれます。

npm cache verify
Cache verified and compressed (~\AppData\Roaming\npm-cache\_cacache):
Content verified: 683 (17851668 bytes)
Index entries: 1046
Finished in 2.921s

npm cache clean コマンド

npm cache verify コマンドを使用してもどうしても治らない場合は、npm cache clean コマンドでキャッシュをクリアしましょう。 このコマンドを手動で実行する際には、--force オプションをつける必要があるので注意しましょう。

npm cache clean --force

参考サイト

補足:不要になりつつあるコマンド

npm shrinkwrap コマンド

バージョンを固定化する機能は、package-lock.json ファイルにて行われるようになったため、このコマンドを手動で実行する必要性はあまりないと思われます。 おそらく互換性のために残されているのだと思われます。

npm dedupe コマンド

node_modules のパッケージは、yarn 同様にフラットに配置されるようになっていますし、重複排除も行われています。 そのため、手動でコマンドを実行する必要性はあまりないと思われます。

deduped.png

※ npm list コマンドで表示される階層と node_modules ディレクトリの階層は異なります。

参考サイト

まとめ

npm のバージョンアップにより、yarn の優位性は徐々に失われつつあります。

関連記事