What is difference between save and save dev? - TerryLee7788/JS_test GitHub Wiki

package.json

  • package.json 通常位於一個 Node.js project 的根目錄下,
  • package.json 檔案裡面通常載名了你當前的project 所需要的各種數據,
  • 你可以給當前的project 一個名稱 (name),
  • project 特定分配的版本 (version),
  • 同時也包含了你想要如何描述當前專案的文案內容 (description),
  • 提供資訊給 npm 處理project tasks 之間的依賴關係 (dependencies)

假設你有一個 package.json 是長這個樣子

{
  "name": "test",
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.13.1",
    "express3-handlebars": "^0.5.2"
  },
  "devDependencies": {
    "chai": "^3.0.0",
    "mocha": "^2.2.5",
    "zombie": "^4.0.13"
  }
}

##Questions:

####- What is dependencies?

當你執行 npm install [package_name] --save,

npm 會自動幫你的 package.json 新增一個 key 叫做 dependencies,

並加入你剛才所輸入的 [package_name], 它就會變成:

dependencies: {
  [package_name]: version
}

做這樣目地的用途是處理好當前 project tasks 之間的依賴關係,

之後假設有新的開發人員要加入此專案,

只要下載 package.json, 以及跑 npm install 即可安裝好專案需要的 tasks, 並開始進行專案

####- What is devDependencies? And what is difference between dependencies and devDependencies?

dependencies is from npm install [package_name] --save

devDependencies is from npm install [package_name] --save-dev

來源的差別只在於 你在 npm install 時, 所輸入的 flag 不同 (--save and --save-dev),

但是這兩者的用途差別在於

devDependencies 這個主要是拿來放 還在開發中 所使用的 tasks,

但是因為如果只跑 npm install 的話

dependenciesdevDependencies 所包含的tasks 都會被下載到你的project 跟目錄裡面

如果你不想下載專案正在開發中所使用的 tasks 記得加個 flag --producation,

command line 執行 npm install --production

devDependencies 所指定的tasks 就不會被安裝到你的node.js project 的根目錄裡面。

Reference doc

npmjs.com 文件

stackoverflow 參考: