はじめに
package.jsonとは、Node.jsプロジェクトに必要な設定を記述したマニフェストファイルです。
主に以下の情報が含まれます。
- パッケージの基本情報
- エントリーポイントと構成
- 依存関係
- スクリプト
- パブリッシュ関連
詳しく見ていきましょう。
package.jsonの各フィールド詳細
1. パッケージの基本情報
| フィールド | 型 | 説明 |
|---|---|---|
name |
string | パッケージ名(スコープ付き可:@scope/package-name)。公開する場合はユニークな名称をつける必要がある1。npmに公開する際の識別子。 小文字で、スペースは使用できない。ハイフン( -)、ドット(.)、アンダースコア(_)は使用可能。 |
version |
string | セマンティックバージョン(例: 1.0.0)。公開する場合は必須1。 |
description |
string | パッケージの簡単な説明。name/keywordsと共にnpm searchの対象。 |
keywords |
string[] | npm検索に役立つキーワード配列。 |
repository |
object/string | Github等のレポジトリ。主に contributor 向け |
homepage |
string | プロジェクトのホームページURL。 |
bugs |
object/string | バグ報告用URLまたはオブジェクト({ url, email })。 |
license |
string | ライセンス(例: MIT)。古くは object/object[]でも定義されていたが、現在は非推奨。非公開プロジェクトでは private: trueに加えてlicense: "UNLICENSED"と併記すると良い?2
|
author |
string/object | 作者情報。 例: "Your Name <you@example.com> (https://example.com)" または { name, email, url }。 |
contributors |
object[] | 複数の共同作者をリスト形式で指定。オブジェクト構造はauthorに同じ。 |
2. エントリーポイントと構成
| フィールド | 型 | 説明 |
|---|---|---|
main |
string | エントリーポイント(例: dist/index.js)。 |
exports |
object/string |
mainの代替フィールド。新規パッケージではこちらが推奨3。複数のエントリーポイントや、条件付きのエントリー解決、定義されたエントリーポイント以外の防止が可能 |
browser |
string/object | ブラウザ環境向けエントリーポイント、またはバンドル対象の指定。viteやwebpack等のbundler |
bin |
string/object | CLI実行用スクリプトのパス(単体/複数指定可)。 |
types / typings
|
string | TypeScript定義ファイルのパス(例: index.d.ts)。非標準フィールド? |
files |
string[] | パッケージに含めるファイル/ディレクトリ一覧。 |
3. 依存関係
| フィールド | 型 | 説明 |
|---|---|---|
dependencies |
object | 本番用依存(npm installでインストールされる)。 |
devDependencies |
object | 開発用依存(--save-dev で追加される)。 |
peerDependencies |
object | 実行時にユーザー側で用意すべき依存(例: Reactライブラリ)。 |
optionalDependencies |
object | インストール失敗してもエラーにならない依存。 |
bundledDependencies / bundleDependencies
|
string[] | パッケージに同梱する依存(npm pack 時などに利用)。 |
4. スクリプト
| フィールド | 型 | 説明 |
|---|---|---|
scripts |
object |
npm runで実行可能なスクリプト群(例: build, test)。 |
pre/post スクリプト |
string |
prebuild, postinstall などのフックスクリプト。 |
5. パブリッシュ関連
| フィールド | 型 | 説明 |
|---|---|---|
private |
boolean |
trueにするとnpmに公開できなくなる(社内パッケージなどに)。 |
publishConfig |
object | npm publish時の設定(latestタグをつけられないようにする等)。 |
engines |
object | 対応Node.jsやnpmのバージョンを指定。 |
os |
string[] | 対応OS(例: ["darwin", "linux"])。 |
cpu |
string[] | 対応CPUアーキテクチャ。 |
6. その他の設定
| フィールド | 型 | 説明 |
|---|---|---|
config |
object | ユーザー定義の設定。npmスクリプト内で npm_package_config_xxx で参照可能。 |
man |
string/string[] | CLIパッケージのmanページパス。 |
workspaces |
string[]/object | monorepo構成で使うワークスペース定義。 |
eslintConfig, babel, jest, prettier など |
object | 各種ツール用の設定。ツールごとに異なるが、package.jsonに含める方式も多い。 |
7. その他非標準フィールド
| フィールド | 型 | 説明 |
|---|---|---|
husky, lint-staged
|
object | Gitフック連携に使われる設定(husky, lint-stagedなど)。 |
storybook, vite, next など |
object | 各種ビルド/実行ツール特有の設定。 |
volta, pnpm, yarn
|
object | 使用ツールによるバージョン固定や設定(例: VoltaのNode.js固定)。 |