[NodeJs] npm --save 到底是什麼? --save-dev 不一樣嗎?:dependencies v.s devDependencies
又是一篇因為每次查完就忘了所以記下來的筆記(年紀到了) (真的到了)
只要開發有在用 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
以上很認真的寫過一次了,希望自己從此可以記得,也希望可以幫助到不太清楚或是和我一樣常常忘記的人 🗿
內容若有任何錯誤,歡迎留言交流指教!🌴