😃
package.jsonを中身から理解したい
いつも、脳死でnpm init
してpackage.jsonを作ってから、npm install
でパッケージをインストールしてっと手順を踏んでいましたが、そもそもpackage.jsonとは何なのでしょうか?
そして、その中身はどのようになっているのかをご紹介したいと思います。
package.jsonとは
package.jsonは、Node.jsプロジェクトの設定ファイルで、プロジェクトの依存関係や設定情報を管理するファイルです。
npm init
で作成できますが、npm init -y
と打つと初期設定をスキップできます。
例えば、中身は以下のようになっています。
{
"name": "my-project",
"version": "1.0.0",
"description": "My awesome project",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"express": "^4.17.1",
"react": "^18.2.0"
},
"devDependencies": {
"jest": "^29.0.0",
"webpack": "^5.0.0"
}
}
依存関係とは
package.jsonは「Node.jsプロジェクトの設定ファイルで、プロジェクトの依存関係や設定情報を管理するファイル。」と説明しましたが、「依存関係」とはプロジェクトが正常に動作するために必要な外部のパッケージやライブラリのことです。
今回の例で言うとdependeciesとdevDependenciesに記述されているライブラリがそれにあたります。
package.jsonの中身
キー | バリュー | 必須 |
---|---|---|
name | パッケージ名。小文字のみでスペース不可 | ⭕️ |
version | パッケージのパージョン。セマンティックバージョニング(x.y.z)形式 | ⭕️ |
description | パッケージの説明文 | ❌ |
private | trueの場合npmに誤って公開するのを防げる | ❌ |
main | パッケージの中で最初に呼ばれるスクリプトファイル | ❌ |
scripts | 任意のshell scriptを実行するエイリアスコマンドを定義できる"scripts": { "start": "node index.js" } と定義されていた場合npm run start でアプリケーション起動など |
❌ |
dependencies | 本番環境で必要なパッケージ | ❌ |
devDependencies | 開発時のみ必要なパッケージ | ❌ |
author | 作者の情報 | ❌ |
license | ライセンスの種類(MITなど) | ❌ |
engines | 必要なNode.jsやnpmのバージョンなどを定義 | ❌ |
repository | ソースコードのリポジトリ情報 | ❌ |
package.jsonなしでnpm installするとどうなるのか
では、package.jsonなしでnpm install
するとどうなるのでしょうか?
結果は、特にエラーなどは起きずにnode_modulesとpackage-lock.jsonが生成されます。
ただ、package.jsonがないと以下の弊害があります。
- どのパッケージをインストールしたのかの記述がどこにも記されないので、node_modulesの管理が難しくなる
- パッケージの依存関係がわからなくなる。
そのためpackage.jsonを作ってからnpm install
するようにしましょう。
まとめ
今回はpackage.jsonについてまとめてみました。
普段、使っているものほど知らないことが多いなと最近気付かされます。
他の方の参考になれば幸いです。
参考
Discussion