package.json
の位置づけや設定可能な内容が分からなかったので調べた範囲でまとめる。
ついでにnpx
についても簡単にまとめる。
package.jsonとは?
Node.jsのプロジェクトは公開の有無に関わらず1つのパッケージとして扱われる。
package.json
はパッケージに関する諸々の情報が記載されているファイルである。
パッケージは、package.json
が格納されているディレクトリがルートディレクトリとして扱われ、npm
のコマンドは基本的にルートディレクトリで実行する必要がある。
package.json
にはパッケージ名やパッケージの説明、ライセンス表記などパッケージの情報や、パッケージの依存関係、エイリアスやテストの定義などコマンドや実行に影響を与える情報などが含まれている。
package.jsonの生成
package.json
はnpm init
コマンドで生成できる。
以下はnpm init
コマンドで生成したpackage.json
の例。
{
"name": "test",
"version": "1.0.0",
"description": "test package",
"main": "test.js",
"dependencies": {
"acorn": "^8.12.1",
},
"devDependencies": {
},
"scripts": {
"test": "jest"
},
"author": "",
"license": "ISC"
}
scripts
コマンド名とそのコマンドを指定した際に実行される内容を定義できる。
ここで定義されたコマンドはnpm run <command name>
で実行可能。
start
やtest
などいくつかのコマンド名は特別扱いされ、npm start
やnpm test
のような形で実行可能。
dependencies
とdevdependencies
dependencies
はパッケージの実行に必要なパッケージ。
devdependencies
は開発やテストに必要なパッケージ。
これらの追加・更新・削除は通常、npm install <package>
コマンドを通して行う。
devdependencies
に反映したい場合は、npm install --save-dev <package>
とする。
package.json
のこれらの項目を変更した場合はnpm install
コマンドで反映する必要がある。
package-lock.jsonとは?
npm install
した際に生成されるファイル。
依存パッケージのバージョンを固定するために使用される。
package-lock.json
が存在する状態でnpm install
した場合はこのファイルの内容を基にパッケージのインストールを実施する。
その際、node_modules
の削除を伴う。
package-lock.json
の内容を優先してインストールしたい場合は、npm ci
を使用する。
npm ci
を使用した場合は、package.json
との内容に矛盾があった場合、エラーとなる。
npx
とは?
パッケージを一時的に実行するためのコマンド。
一時的にパッケージを利用でき、使用後はパッケージが残らない。
参考