このページでわかること
- package.jsonって何者?どんな役割があるの?
- よく出てくるプロパティの意味と使い方
- 実際に見るときのチェックポイント
package.jsonってなにもの?
簡単に言うと、Node.jsプロジェクトの設定ファイル&命令リストです。
「このプロジェクト、どんなライブラリ使ってるの?」「どうやって起動するの?」といった情報がぎゅっと詰まっています。
プログラムの“取扱説明書”みたいな存在ですね。
たとえば、ReactやExpressなどを使ったアプリを開発しているとき、package.json
がないとライブラリの管理も、起動の仕方もわからなくなってしまいます。
代表的なプロパティの意味
項目 | 意味 | 補足 |
---|---|---|
name | プロジェクト名 | npmに公開する場合も使われる |
version | バージョン番号 | 1.0.0 などセマンティックバージョン形式 |
description | プロジェクトの説明 | GitHubなどに表示される |
main | エントリーポイント | 通常は index.js |
scripts | 起動やビルドなどのコマンド | npm run に対応 |
dependencies | 本番でも必要なパッケージ | React, Express など |
devDependencies | 開発中だけ使うパッケージ | ESLint, Jest など |
scriptsってなに?
scripts
は、npm runで呼び出せるコマンドを定義しておくところです。
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"build": "webpack"
}
npm run start
→ アプリ起動npm run dev
→ 自動再起動付きで起動(開発用)npm run build
→ ビルド処理
こうしておくと、チームメンバーも迷わず使えるし、自分でも毎回長いコマンド打たなくてすむのでとても便利です。
dependenciesとdevDependenciesの違い
依存関係(dependencies)は、2つに分かれています:
種類 | 使う場面 | 例 |
dependencies | 本番・開発両方 | react, axios, express |
devDependencies | 開発中だけ必要 | nodemon, eslint, prettier |
インストール時のコマンドで区別されます:
- 本番用:
npm install ライブラリ名
- 開発用:
npm install --save-dev ライブラリ名
Point:本番環境に不要なものはdevDependenciesへ!
実際のpackage.jsonの例
{
"name": "my-app",
"version": "1.0.0",
"description": "練習用Node.jsアプリ",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^2.0.22",
"jest": "^29.0.0"
}
}
この例だけでも、だいぶイメージがつかめるのではないでしょうか?
よくある疑問Q&A
Q. package-lock.jsonはGitに入れるべき?
A. はい、入れるべきです!依存ライブラリのバージョンを固定できるので、他の人がクローンしたときも同じ状態で動作させられます。
Q. scriptsって自分でいくつでも追加していいの?
A. もちろんOK!開発用コマンドやテスト、自動整形など自由にカスタムできます。
Q. JSONの構文エラーってすぐ気づける?
A. VSCodeなどのエディタなら自動で構文エラーをチェックしてくれます。気楽にいきましょう。
まとめ
package.json
はNode.jsプロジェクトの「設計図」兼「命令セット」- よく使うのは
scripts
,dependencies
,devDependencies
npm run
でスクリプトが簡単に実行できる- ライブラリの区分けがプロジェクトの安定性に直結する
最初はなんだか見慣れない書き方で戸惑うかもしれませんが、慣れてくると「このプロジェクト、こういう風に動くんだな〜」って読めるようになります。
ぜひ、一度じっくり読んでみて、package.json
と仲良くなってください!
コメント