首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau
百百 BLOG
首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau

Kurau Blog

「隨心而寫,真真假假,都是我」

一個記錄生活、輸出興趣的個人空間。
遊戲、影視、閱讀、學習……每一段體驗都值得留下文字。

頁面導覽

  • 學習紀錄
  • 遊戲心得
  • 影視Life
  • 書單
  • 委託作品與二創
  • Kurau
  • 合作邀請

找到我

歡迎來 Discord 找我聊天!

“曾經發生的事不可能忘記,只是暫時想不起來而已。”-《神隱少女》

© 2026 Kurau All rights reserved

開發工具

npm --save 到底是什麼 --save-dev 不一樣嗎

By Kurau·2023-07-24·Updated 2026-05-09·3 分鐘閱讀

--save vs --save-dev

TL;DR
==--save = dependencies(生產環境也需要),如 React、axios。--save-dev (-D) = devDependencies(只在開發時需要),如 TypeScript、ESLint。npm 5+ 起 --save 是預設行為==,可省略。
主要參考
[NodeJs] npm --save 到底是什麼? --save-dev 不一樣嗎?(itsems-frontend)](https://medium.com/itsems-frontend/nodejs-npm-dependencies-devdependencies-8934f641c8ef)

兩種 dependency 的差別

# 進 dependencies(預設,production 也裝)
npm install react
# 等同於 npm install --save react

# 進 devDependencies(只開發時用)
npm install -D typescript
# 或 npm install --save-dev typescript
bash
// package.json
{
  "dependencies": {
    "react": "^18.0.0"          // ⭐ production 也安裝
  },
  "devDependencies": {
    "typescript": "^5.0.0"      // ⭐ 只 dev 安裝
  }
}
json

何時用哪個

套件型別用 --save用 --save-dev
UI 框架(React, Vue)✅
HTTP 客戶端(axios)✅
Runtime utility(lodash, dayjs)✅
Backend SDK(Express, Prisma)✅
State 管理(Redux, Zustand)✅
TypeScript✅
型別定義(@types/*)✅
測試工具(Jest, Vitest)✅
Lint / Format(ESLint, Prettier)✅
打包工具(Webpack, Vite)✅
Git hooks(Husky)✅

判斷準則

問自己:「這個套件在 production server 跑時還需要嗎?」

答案用法
會dependencies
只在開發 / build 時需要devDependencies
# 範例:寫 React 元件用了 dayjs 處理時間 → production 渲染時要用
npm install dayjs

# 範例:用 Vitest 寫單元測試 → production 不會跑測試
npm install -D vitest
bash

production 安裝(skip devDependencies)

# 只裝 dependencies(deploy / Docker 內常用)
npm ci --omit=dev

# 或 npm install
npm install --production         # 舊寫法
NODE_ENV=production npm install   # 也行
bash

Docker production image 必須 omit dev,否則 image 大十倍。


第三類:peerDependencies

有時你會看到第三種:

{
  "peerDependencies": {
    "react": "^18.0.0"
  }
}
json

適合:你寫的 library(別人 install 你的套件)。peerDependencies 告訴使用者「你必須裝這個 package 才能用我」。

為什麼不用 dependencies:避免 react 被裝兩次(主專案一份 + library 一份),會有 hook 錯誤等問題。


第四類:optionalDependencies

選擇性安裝,失敗也不會讓 npm install 報錯:

{
  "optionalDependencies": {
    "fsevents": "^2.0.0"        // macOS 才有,其他平台 skip
  }
}
json

平台特定 套件用這個。


2026 年現實

npm 5(2017)起 --save 是預設,但寫 --save 不會錯,只是冗餘:

npm install react                # 等同
npm install --save react         # 等同
npm install -S react             # 等同
bash
# devDependencies 必須明確
npm install --save-dev typescript
npm install -D typescript
bash

今天還在文件看到 --save 是文件沒更新,不影響行為。

目錄

    ◆ 相關文章

    • Npm 與 Yarn

      2026-05-09
    • windows系统下如何安装多版本node - NVM (好棒好用)

      2026-05-09
    • 發布自己的npm包

      2026-05-09
    • github 多個帳戶 SSH登入

      2026-05-09
    ← 上一篇live 2d 在網頁上下一篇 →Framer Motion 打造比最棒還要棒的動畫

    ◆ 關於作者

    Kurau

    個人寫作 / 創作的 SoT,記錄遊戲、影視、學習與生活。

    更多 Kurau 的文章