如果你也是使用vue可能需要注意以下依賴:
"vue-loader": "9.9.5",
"vue-style-loader": "1.0.0",
"vue": "2.1.8",
"vue-template-compiler": "2.1.8"
針對這種依賴公升級解決方法:
只發布編譯後的檔案
這樣測試同學就無需關心,公升級依賴後再重新打包發布。
優點: 測試同學無需關注依賴安裝
缺點: 產出目錄充斥著各種版本的檔案,增量儲存repo越來越大
不通過包管理工具,直接把 node_modules打包,測試環境解壓,每次公升級依賴重新發布
開發直接把 node_modules 打成tar包, 部署的時候解壓然後,再通過 npm run test打包測試. 一般現在乙個專案乙個node_modules打包後幾十m(gzip之後),更新依賴之後解壓。
好處: 無網路
壞處: 有一些c++的npm包,在不同的系統環境下是不同的,因此在osx下的node_modules,在ubuntu失效。 好在我們的專案沒有這種依賴包,所以也可以做一種方案。若有c++的包,則需要在本地裝虛擬環境,如vagrant或docker跑測試對應的環境. 每當此時心裡總是在想,咱還是前端開發嗎[捂臉]
包管理工具鎖死
node發展歷程**現了幾種方式來做版本鎖定, 以下面package.json為例
"name": "npm-lock",
"version": "0.0.1",
"description": "test dependies lock way",
"main": "index.js",
"scripts": ,
"dependencies": {
"vue": "^2.2.0"
npm-shrinkwrap.json
package-lock.json
yarn.lock
命令npm shrinkwrap無無
生成方式
需要命令生成
npm安裝自動生成
yarn安裝自動生成
npm版本
任意》=5.0.0
任意額外安裝無無
yarn
增加依賴
npm i -s [email protected] && npm shrinkwrap
npm i -s [email protected]
yarn add [email protected]
更新npm uni -s vue && npm i -s [email protected]
npm uni -s vue&& npm i -s [email protected]
yarn upgrade [email protected]
刪除npm uni -s vue
npm uni -s vue
yarn remove vue
發布支援
不支援支援
離線不支援
不支援支援
快取不支援
不支援支援
npm shrinkwrap
node: v6.10.2
npm: 3.10.10
npm i [email protected] -s, 檢視node_modules vue版本是2.2.0
npm官方提供 npm shrinkwrap命令,生成 npm-shrinkwrap.json檔案。
下面對依賴做增加,刪除,修改的操作,看看 npm-shrinkwrap.json變化
1. 增加依賴
npm i [email protected] -s, npm-shrinkwrap.json 自動將vue-http及其依賴新增進去
2. 刪除依賴
npm uni vue-http -s, 刪除的時候自動刪除npm-shrinkwrap.json中的vue-http及其依賴; 若忘了加 -s 或 -d, 則無法刪除, 不夠智慧型。
3. 公升級/降級依賴
npm up [email protected] -s ,公升級依賴,依賴沒有公升級,npm-shrinkwrap.json無更新,略顯雞肋。所以更新的話,直接通過上述方式刪除,再新增吧。
4. 結果
優點:npm天然支援
缺點:需要手動觸發,update不生效
yarn
重新把npm shrinkwrap驗證邏輯跑一遍.
1. 新增依賴
yarn add [email protected] [email protected]的時候,自動生成了 yarn.lock檔案及其相關依賴
2. 刪除依賴
yarn remove vue-http, 自動刪除依賴
3. 更新依賴
yarn upgrade [email protected], 依賴更新成功, yarn.lock版本更新成功
4. 結果
優點: 通過yarn命令操作,可以自動更新yarn.lock,從快取中讀取速度快. 支援離線模式
package-lock.json
1. 增加依賴
npm i [email protected] -s, 自動生成的package-lock.json 自動將vue-http及其依賴新增進去
2. 刪除依賴
npm uni vue-http -s, 刪除的時候,自動刪除package-lock.json中的vue-http及其依賴; 不需要加 -s -d
3. 公升級/降級依賴
npm up [email protected] -s ,公升級依賴,依賴沒有公升級,package-lock.json無更新,。所以更新的話,直接通過上述方式刪除,再新增吧。是npm update的問題
4. 結果
優點:npm天然支援, 比較智慧型。
總結推薦閱讀
NPM如何管理依賴包版本?
這是conardli的第 69 篇原創,謝謝你的支援!nodejs成功離不開npm優秀的依賴管理系統。在介紹整個依賴系統之前,必須要了解npm如何管理依賴包的版本,本文將介紹npm包的版本發布規範以 何管理各種依賴包的版本以及一些關於包版本的最佳實踐。重新上傳 取消你可以執行npm view pac...
npm指定版本
在npm中安裝固定的版本號package,只需要在其後加 版本號 cnpm i vant 2.2.1 s或者在package.json上寫入版本 1.版本號基本格式 主號.次號.修補號 2.版本號規則 1 version 指定版本號 vue clipboard2 0.0.8 指定所依賴的該元件必須是...
依賴的版本
清晰使用的語義化版本的介紹,特別建議閱讀下最後的關於 修飾符的版本介紹,可能大部分人的理解都是錯的.yarn 裡的包遵守 語義化版本,也叫 semver 當你從資源庫安裝乙個新包,它會和語義版本範圍一起被新增到你的 package.json。版本號可以劃分為主版本號.次版本號.修訂號,類似這些 3....