[NodeJs] npm --save 到底是什麼? --save-dev 不一樣嗎?:dependencies v.s devDependencies

itsems
itsems_frontend
Published in
Nov 18, 2020

--

Photo by Everyday basics on Unsplash
又是一篇因為每次查完就忘了所以記下來的筆記(年紀到了) (真的到了)

只要開發有在用 npm,不管是 gulp、vue cli、react …各種工具,在下載套件的時候,一定常常看到下載的套件名稱之外再加上 --save 或是 --save-dev ,或是 -S ,這邊一口氣記下來,下次忘記了再回來溫習。

NPM

NPM 全名 Node Package Manager,套件管理工具,package.json 會記下你在專案中安裝的所有套件

這篇假設正在閱讀的你曾經使用過 npm,如果 npm 對你來說有些陌生,你可以用以下的指令建立一個 npm 的初始環境,npm 會自動替你生成空白的 package.json 這個檔案:
$ npm init

如果你的 package.json 內容還是空的,那是因為你什麼都還沒有安裝,我們就來試著安裝一個很輕的套件看看:

Lodash 是一個 Javascript 的函式庫,提供了很多常用資料處理函式

想了解更多可以看:[JavaScript] 讓Lodash來幫你處理資料吧

進入 Lodash npm 官網後跟著他的安裝指令下:

$ npm i --save lodash

這樣你的 dependencies 就會出現了:

如果稍微修改剛剛下載的指令再安裝一次:

$ npm i --save-dev lodash

就會看到 lodash 跑去別的地方:

所以 dependencies 跟 devDependencies 差在哪裡? 看看官方說法

  • "dependencies": Packages required by your application in production.
  • "devDependencies": Packages that are only needed for local development and testing.

翻成中文:

  • dependencies:你用了什麼套件
  • devDependencies:你只有在開發測試的時候需要的套件

m...所以我要用的跟我開發要用的哪裡不一樣?

直覺一點的想,你可以想像 dependencies 的套件是你的程式 build 出來之後發布版本仍然需要的套件,舉例來說,我需要 sass 套件將我的 sass 轉成 css,但是發布版本已經是 css 了,就不需要再有 sass 套件了。又或者我會用 babel 來把我的 ES6 語法轉為 ES5 ,這樣的轉換功能一樣只需要在我的開發環境之下,所以可以安裝在 devDependencies 就好。

後記

npm v5.0.0 之後,--save 已經成為預設指令,表示你的

$ npm i --save lodash

可以只要

$ npm i lodash

--save-dev 也可以簡寫為 -D

$ npm i lodash --save-dev
等同於
$ npm i lodash -D

要看自己的 npm 版本的話:

$ npm -v

或者看更多說明:

$ npm help i

以上很認真的寫過一次了,希望自己從此可以記得,也希望可以幫助到不太清楚或是和我一樣常常忘記的人 🗿

內容若有任何錯誤,歡迎留言交流指教!🌴

--

--

itsems
itsems_frontend

Stay Close to Anything that Makes You Glad You are Alive.