package.jsonとは
package.jsonについて理解する
package.jsonを読み解く
package.jsonとは
プロジェクト名、バージョン、必要なライブラリ(依存関係)、実行スクリプトなどをJSON形式で記述
他の作業者が同じライプラリを使うための情報が記載される
npm installを実行すればpackage.jsonに定義されたバージョン、必要なライブラリ(依存関係)と同じものを一括でインストール
各プロパティ
たくさんの設定できる項目があるが、その多くは通常の開発では使用しない。
現時点(2026/3/31時点)ではよく使うもの以外は割愛(必要時に随時追記)
name
自分が作成したpackage.jsonを持つプロジェクト(パッケージ)をnpmに公開する時には、nameとversionの組み合わせで完全に一意な識別子が生成される
パッケージ公開予定がない時は省略可能
version
変更した時は必ずバージョンも変更する
パッケージのnpm公開予定がない時は省略可能
description
割愛
keywords
割愛
homepage
割愛
bugs
割愛
license
割愛
author
割愛
funding
割愛
files
割愛
exports
割愛
main
割愛
browser
割愛
bin
割愛
man
割愛
directories
割愛
repository
割愛
private
private: true に設定すると、npm はそのパッケージの公開を拒否する
これは、プライベートリポジトリが誤って公開されるのを防ぐための仕組み。
特定のパッケージを特定のレジストリ(例えば、社内レジストリ)にのみ公開したい場合は、後述する publishConfig ディクショナリを使用して、公開時に registry config パラメータを上書きする必要がある。
scripts
パッケージのライフサイクルのさまざまな段階で実行されるスクリプトコマンドを ** 含む** 辞書。
キーには「ライフサイクルイベント名」、または「任意の呼び出し名」が指定され、値はその時点で実行するコマンド。
キーの種類
キーは以下の2種類に分かれる
ライフサイクルイベント名
- 例
| 名前 | タイミング |
|---|---|
| preinstall | install前 |
| install | install中 |
| postinstall | install後 |
| prebuild | build前 |
| build | ビルド時 |
| postbuild | build後 |
- 特徴
特定のタイミングで自動実行される
{
"scripts": {
"dev": "next dev",
"build": "next build",
"prebuild": "echo before build",
"postbuild": "echo after build"
}
}にて、npm run buildを実行すると、下記結果になる
echo before build
next build
echo after build任意のスクリプト名
例
- dev
- lint
- format
- start
特徴
npm run xxx でしか動かない
ライフサイクルについては公式ドキュメント - scriptsを参照。
config
割愛
dependencies
本番向けの依存関係。
アプリが動くために必要なものを記載
例
- react
- next
- axios
devDependencies
開発向けの依存関係。
外部のテストフレームワークやドキュメントフレームワークなど、誰かがモジュールをダウンロードして自分のプログラムで使用する場合に必要のないものをこちらに記載する。
開発のときだけ必要なものを記載
例
- typescript
- eslint
- biome
- prettier
dependenciesとdevDependenciesの違いと関係について
npm installすると、dependenciesとdevDependenciesの両方に書かれているパッケージをすべてnode_modules内にインストールする。
npm install --productionした場合、またはパッケージXXXを公開し開発者以外がnpm install XXXした場合はdependenciesのパッケージだけがインストールされる
peerDependencies
割愛
peerDependenciesMeta
割愛
bundleDependencies
割愛
optionalDependencies
割愛
overrides
割愛
engines
割愛
os
割愛
cpu
割愛
devEngines
割愛
publishConfig
割愛
workspaces
割愛