Node.js と npm の使い方(その4:便利コマンド)

この記事は最終更新日から 4年以上 が経過しています。

前回、「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 の優位性は徐々に失われつつあります。

関連記事

最近の Web 界隈では、UX を高めるために、UI を JavaScript でガリガリ実装するというのが普通になってます。フロントエンドエンジニアなんていう職種が生まれるほど、この界隈は活発です。そこでフロントエンド開発でほぼ必須となるであろう Node.js と npm について少しまとめてみます。今更感がすごい ...
前回、「Node.js と npm の使い方(その1:概要)」の続きです。今回はパッケージの更新についてです。パッケージの最新化npm でインストールした各パッケージですが、インストールした後にバグフィックスや機能追加などが行われて、パッケージが更新されている可能性があります。そこで、インストールされているパッケージを ...
前回、「Node.js と npm の使い方(その2:パッケージの更新)」の続きです。今回は npm-scripts についてです。npm-scripts とは?npm で 使用している package.json にスクリプトを定義しておくと、npm コマンドからそのスクリプトを実行できるというものです。npm では各 ...
最近のアプリケーションは開発効率を上げるために大量のライブラリを組み合わせて作成することが多くなっています。そういった状況下では、たった1つのライブラリがバージョンアップすることで、そのライブラリに依存している他のライブラリが正常に動作しなくなり、やがてアプリケーション全体が正常に動作しなくなるというような状況に陥りま ...

記事検索

最新記事

人気記事

RSSフィード

お知らせ

  • 2022/11/24 NEW
    ツールに「QRコードジェネレーター」を追加しました。
    任意のテキストからQRコードを生成します。絵文字なども使用できます。
    長いURLや大量のテキストを入力するのが面倒な場合などにお使いください。
  • 2022/11/23 NEW
    ツールに「くじ引き・抽選ツール」を追加しました。
    任意のリストの中からくじ引き(抽選)を行います。
    順番決めやグループ分け(チーム分け)も行うことができます。
  • 2022/11/01
    ツール「ターミナルAAジェネレーター」「ブラウザコンソールAAジェネレーター」「IDN 変換ツール」「uuencode / uudecode ツール」の公開を終了しました。
  • 2022/10/02
    ツールに「テキスト画像ジェネレーター」を追加しました。
    任意のテキストを画像に変換します。
    AA(アスキーアート)や絵文字などをそのまま画像化することができます。
  • 2022/09/30
    ツール「巨大文字AAジェネレーター」と「点字AAジェネレーター」に、「この結果を画像に変換する」を追加しました。
    生成したAAをテキストから画像に変換できます。