【えぬぴーえむ】

npm とは?

最終更新:
💡 JavaScriptのパッケージを取得・管理する

JavaScriptのパッケージを公開・取得・管理する仕組み。Webサイト・CLI・レジストリの役割、package.jsonとロックファイル、インストール時の確認点を解説します。

📌 このページのポイント
npm:パッケージを取得・管理するpackage.jsonロックファイル依存関係の指定scriptsの定義package-lock.json解決した構成を記録npm CLIで解決・導入レジストリ等から部品を取得npm ci:一致するロックを基に再導入既存のnode_modulesは作り直す依存構成の再現と、安全性の保証は別
npmにはCLI、Webサイト、レジストリの役割があります。ロックファイルを管理しても安全性や実行環境は別に確認し、導入時のスクリプトや提供元も点検します。
ひよこ ひよこ
npmは、部品を入れるコマンド?
ペンギン先生 ペンギン先生
そのコマンドを使うCLIのほか、パッケージを探すWebサイトと、公開されたパッケージを置くレジストリもあるよ。JavaScriptのライブラリや開発用ツールを取得・管理する仕組みだ。
ひよこ ひよこ
パッケージは、Node.js専用?
ペンギン先生 ペンギン先生
Node.jsで動くものだけでなく、ブラウザ向けのライブラリや開発時のツールもある。取得できることと、どの環境で使えるかは別だよ。パッケージの対応環境や利用方法を確認しよう。
ひよこ ひよこ
npm installを実行すれば、全部安心?
ペンギン先生 ペンギン先生
依存関係の解決や導入を扱うけれど、安全性や品質まで保証するものではない。指定するパッケージ名と提供元、用途やライセンスを確かめる。インストール時にスクリプトが動く構成もあるので、何を実行するかも確認するんだ。
ひよこ ひよこ
package.jsonだけあれば、同じものが入る?
ペンギン先生 ペンギン先生
依存関係にバージョンの範囲を指定することもある。package-lock.jsonには、実際に解決した依存関係の構成を記録する。共同開発ではロックファイルも管理し、変更内容を確認するとよいよ。
ひよこ ひよこ
npm ciは、npm installと同じ?
ペンギン先生 ペンギン先生
既存のロックファイルに基づいてプロジェクトを導入するコマンドだ。package.jsonと一致しなければエラーになり、ロックファイルを書き換えない。既存のnode_modulesは取り除いて作り直すので、実行する場所と目的を確認しよう。
もっと詳しく知りたい人へ

npm runは、パッケージを導入する?

主にpackage.jsonのscriptsに定義したコマンドを実行します。npm installによる導入とは役割が違います。プロジェクトごとに中身が異なるため、buildやtestという名前だけで処理を決め付けず定義を確認します。

ロックファイルがあれば、安全性も保証される?

いいえ。依存関係の構成を固定・再現しやすくするための情報です。含まれるコードや実行される処理の安全性、動作環境の違いまで保証するものではありません。更新時も差分と検証結果を確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「npm」って出てきたら「JavaScriptのパッケージを公開・取得・管理する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「npm」 = JavaScriptのパッケージを扱う仕組みの名称
💬 コマンドの名前として使う場合はCLIを指します。パッケージを置くレジストリや、それを探すWebサイトの役割とも分けて考えます。

参考資料

← 用語集にもどる