🚄
$ npm init $ npm install パッケージ名 【新規Expressプロジェクト作成を例に】
Node.js製WebサーバーExpressの新規プロジェクト作成を例にして、npmの使い方をメモしておこうと思います。今回説明するのは以下です。
$ npm init
$ npm install パッケージ名
$ npm install パッケージ名@x.y.z
$ npm install -D パッケージ名
前提情報
$ npm -v
9.6.7
①ディレクトリ作成
空のディレクトリを適当に作成
②初期化
ターミナル
$ npm init
初期化には「最初の状態に戻す」という意味の他にも「使い始められるように、最初の状態を整える」という意味もあります。今回は後者です。(あとから修正できるので一旦全てreturn)
実行するとプロジェクト直下にpackage.jsonが生成されます。
package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
package.jsonのあるプロジェクトのことをパッケージと呼びます。
パッケージとモジュールの違いについては以下に記載
③install
以下は、install系コマンドを入力してからのフローイメージです
3パターン紹介します
最新バージョンをinstallする場合
ターミナル
$ npm install express
- 最新バージョンのパッケージがpackage.jsonのdependenciesに追記される
- node_modulesディレクトリが作成され、dependenciesに追記されたパッケージが格納される
- package-lock.jsonが作成される
指定したバージョンをinstallする場合
ターミナル
$ npm install express@x.y.z
- 指定したバージョンのパッケージがpackage.jsonのdependenciesに追記される
- node_modulesディレクトリが作成され、dependenciesに追記されたパッケージが格納される
- package-lock.jsonが作成される
開発時のみ必要なパッケージをinstallする場合
ターミナル
$ npm install -D eslint
- 最新バージョンのパッケージがpackage.jsonのdevDependenciesに追記される
- node_modulesディレクトリが作成され、devDependenciesに追記されたパッケージが格納される
- package-lock.jsonが作成される
補足
package-lock.json
- package.jsonとの違いは、依存関係にあるパッケージも含めて全てのパッケージのバージョンと情報まで管理されている点です。
- package.jsonのdependenciesとdevDependenciesを見ればわかるように、依存関係の解決のためにインストールされたパッケージ分までは厳密にバージョン管理されていないので、最新バージョンのものがインストールされてしまいます。
package-lock.jsonに関しては以下にも記載されています。
参考
Discussion