最近在 clone 新專案時,下了 npm install,發現 package-lock.json 裡的套件版本被更新了,但又怕推上去會有版本上的問題😓
爬了一下文才知道,原來 npm install 會自動幫你更新套件😨 可是瑞凡~~~我沒有要更新啊!!
不過意外也發現了另一個好東西npm ci
,可以解決這個問題。
什麼是 npm ci ?
npm ci 跟 npm i 一樣,都可以安裝依賴,npm ci 的 ci 是「Continuous Integration」,中文是持續集成的意思,這個指令在 npm 5.7.1 的版本才能使用。
npm install 與 npm ci 有什麼差別?
npm install 針對 package.json 的版本來安裝套件,執行後會出現 node_modules、package-lock.json,會自動還原專案並更新套件
npm ci 針對 package-lock.json 的版本來安裝套件,專案需有 package-lock.json 或 npm-shrinkwrap.json 文件存在,因為是參照package-lock.json 的版本,所以不會有版本自動更新的問題
另外還有一些 npm ci 需注意的地方
🔸 當 package-lock.json 中的依賴於 package.json 不一致時,npm ci 退出但不會修改 package-lock.json
🔸 npm ci 只可以一次性的安裝整個專案依賴,但無法新增單個依賴項
🔸 如果 node_modules 已經存在,它會先刪除 node_modules 之後再安裝,以確保乾淨的狀態
以上是我的學習筆記,希望也有幫助到你哦 😀