🔹依存関係が2種類ある理由
Node.js / npm には「アプリ本番で必要なもの」と「開発中だけ必要なもの」があるから。
それを分けるために dependencies と devDependencies がある。
🔹dependencies
-
本番環境(Production)でも必要なライブラリ
つまりアプリが動くために必須のもの。 -
本番デプロイ先(Vercel, AWS, etc.)にもインストールされる
-
例:
react(UIライブラリ)
next(フレームワーク)
express(サーバー)
@auth/prisma-adapter(認証アダプター)
package.json
"dependencies": {
"next": "^15.0.0",
"react": "^18.3.0",
"@auth/prisma-adapter": "^1.0.0"
}
- インストールコマンド
npm install react
🔹devDependencies
-
開発環境にしか必要ないライブラリ
-
本番アプリの実行には不要
-
例:
typescript(型チェック用)
eslint(Lintツール)
@types/*(型定義ファイル)
vitestjest(テストフレームワーク)
package.json
"devDependencies": {
"typescript": "^5.6.0",
"@types/react": "^18.3.0",
"eslint": "^9.0.0"
}
- インストールコマンド
npm install -D typescript
# または
npm install --save-dev typescript
🔹具体例(Next.js プロジェクト)
-
react→ UI を描画するために 本番でも必要 →dependencies -
@types/react→ 開発中の型補完用、本番には不要 →devDependencies
🔹まとめ
-
dependencies→ 本番でも必要(動作に必須) -
devDependencies→ 開発専用(型チェック、Lint、テストなど)