NodeJS 專案管理中使用 shrinkwrap 來處理相依套件問題

開始一個 NodeJS 專案很簡單

npm init

填寫了專案資訊後開始需要什麼套件就裝什麼的過程

npm install XXX --save

--save 是為了保留用了哪些套件來達到讓使用或是接手開發的夥伴能夠重現環境

npm install 這指令還原環境

這看起來好像沒什麼,但是如果只是用 save 來記錄使用套件的做法,package.json 檔案中預設會以^以上版本的方式標記該使用套件!

問題可能就因此發生,也許某個套件的相依套件所需要的版本是 3.4.2 但他發現有 3.7.0 就去抓這版本,而導致某些因為升級套件沒處理好的部分噴出錯誤

今天夥伴剛好再處理前端開發環境時使用我打包好的環境發現這問題[node-saas](https://www.npmjs.com/package/node-sass) 升級所帶來的影響還真不小XD

其實這問題是可以被避免的,當然如果專案本身的開發能夠隨著其它套件更新而帶來提升是最好的結果,但如果有這種可能發生或許可以將package.json中相依套件前符號改成@指定版本還有本篇的工具

npm shrinkwrap

這指令會在專案確定要發佈時使用,記錄所有套件的相依資訊,確保使用者不會偏離軌道XD

根據官方說明,執行 install 時會先查看有無 shrinkwrap 產生的 npm-shrinkwrap.json 檔案並且優先使用此紀錄哦!

其實這指令還真是冷門啊! 在聽到 John 介紹之後才知道有這玩意 哈哈 (之前最多就用@符號的說~)

Facebook 外掛整合

Share: