package.json(パッケージジェイソン)とは、Node.jsやnpmを使う開発プロジェクトの設定情報をまとめて記述するファイルのことです。プロジェクトの名前やバージョン、必要な外部パッケージ(依存関係)、よく使うコマンドなどが、JSONという形式で書かれています。
現実世界でいえば、料理でいう「レシピの材料表と手順書」を一枚にまとめたものです。この料理(プロジェクト)に何の材料(ライブラリ)がどれだけ必要で、どんな手順(コマンド)で作るのかが分かるため、誰が見ても同じ環境を再現できます。
package.jsonの役割
package.jsonがあることで、プロジェクトに必要な情報が一か所に集まります。とくに重要なのが依存関係の管理です。使用する外部パッケージとそのバージョンが記録されているため、別のパソコンでもコマンド一つで同じ環境をそろえられます。
主な項目
package.jsonにはさまざまな項目が書かれます。代表的なものを見てみましょう。
| 項目 | 内容 |
|---|---|
| name | プロジェクトやパッケージの名前。 |
| version | バージョン番号。 |
| dependencies | 動作に必要な外部パッケージの一覧。 |
| scripts | よく使うコマンドに名前をつけて登録する。 |
依存関係の管理
「dependencies」に必要なパッケージを書いておくと、npm installというコマンド一つで、それらをまとめてダウンロード・導入できます。開発チームでこのファイルを共有すれば、全員が同じパッケージ・同じバージョンで作業でき、「自分の環境では動くのに他の人の環境では動かない」といったトラブルを防げます。
package-lock.jsonとの関係
package.jsonと一緒によく登場するのが「package-lock.json」です。package.jsonが必要なパッケージの大まかな指定であるのに対し、package-lock.jsonは実際に導入されたバージョンを細かく記録します。これにより、環境をより正確に再現できるようになっています。
dependenciesとdevDependencies
依存パッケージには2つの種類があり、実際の動作に必要なものと、開発中だけ使うものを分けて管理できます。
| 項目 | 用途 |
|---|---|
| dependencies | アプリの動作そのものに必要なパッケージ。 |
| devDependencies | 開発・テスト時だけ使うパッケージ。 |
scriptsの活用
「scripts」には、長いコマンドに短い名前をつけて登録できます。たとえば「npm run start」でアプリを起動、「npm run build」でビルド、というように、チーム内で決まった操作を誰でも同じコマンドで実行できるようになります。これにより、複雑なコマンドを覚えなくても、作業手順を統一できます。
package.jsonの作り方
package.jsonは、手で書くこともできますが、多くの場合npm initというコマンドで自動的に作成します。対話形式で名前やバージョンなどを入力していくと、雛形が生成されます。あとは開発を進めながらパッケージを追加していくと、その情報が自動でpackage.jsonに書き込まれていきます。プロジェクトの土台となる大切なファイルなので、内容を理解しておくと管理がぐっと楽になります。

コメント