Node.js package.json:專案身分證與配置核心詳解
在每個 Node.js 專案的根目錄下,一定能看到 package.json。它不僅僅是專案的清單,更是整個開發工作流、套件依賴與部署指令的指揮中心。
基礎身分與元數據 (Metadata)
這些欄位定義了專案的基本屬性,對於發布 NPM 套件尤為重要:
name:專案名稱。必須是全小寫,不能有空白。version:符合 語意化版本 (SemVer) 規範,例如1.2.3(重大更新.功能更新.錯誤修復)。main:定義程式的進入路徑(如index.js),當別人require你的套件時,Node 會讀取此檔案。type:"module"代表專案全面使用 ES Modules;"commonjs"(預設) 代表使用 CommonJS。
依賴管理:dependencies 與 devDependencies
這是檔案中最核心的部分,區分了專案在不同階段需要的工具。
1. dependencies (運行依賴)
應用程式在 正式生產環境 運行時不可或缺的套件(如 express, mongoose, dotenv)。
- 安裝指令:
npm install <pkg>
2. devDependencies (開發依賴)
僅在 開發測試階段 需要的工具,正式部署時不需要(如 nodemon, jest, eslint, prettier)。
- 安裝指令:
npm install <pkg> --save-dev
版本符號解析
^1.2.3(Caret):允許更新到下一個大版本前的最新版(最常用)。~1.2.3(Tilde):僅允許更新修補版本 (Patch)。1.2.3:鎖定版本,完全不更新。
Scripts:自定義自動化指令
透過 scripts 欄位,你可以將冗長的終端機指令封裝成簡短的代稱。
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest --watchAll",
"lint": "eslint . --fix"
}
- 執行方式:
npm run dev(注意:start與test可省略run直接執行)。
為什麼需要 package-lock.json?
每當你執行 npm install,系統會自動產生或更新此檔案。它完整紀錄了所有依賴套件(包含遞迴層級)的 確切版本與雜湊值。
- 核心價值:確保整個開發團隊以及 CI/CD 伺服器所安裝的環境 100% 同步,避免「我的電腦可以跑,但部署就壞掉」的窘境。
不要手動修改
package-lock.json。所有的更動都應透過 npm 指令自動維護,並務必將它提交到 Git 倉庫中。總結
package.json是每個 Node.js 開發者必須精通的檔案。- 養成區分
dependencies與devDependencies的好習慣,能讓正式環境的映像檔更輕量、更安全。 - 善用 Scripts 建立標準化的開發與建置流程。