2014-04-24 95 views
0

如果我做npm install "grunt-contrib-uglify" --save-dev,下面一行將被添加到我的dev的依賴性:爲什麼--save-dev的選項增加了一個依賴的「版本號或更高版本」,而不是「這個確切的版本號」

grunt-contrib-uglify: "^0.4.0", 

我認爲這是構建腳本引用所需工具的確切版本以及在需要時手動升級工具的最佳實踐,以避免在構建過程中的不適當時機進行迴歸。

所以我很驚訝的是,添加的行不

grunt-contrib-uglify: "~0.4.0", 

我在這裏失去了一些東西?在使用--save-dev選項後,是否應該將^更改爲〜?

回答

2

該〜並不意味着確切的版本,^和^都是semver的一部分,並且表示不間斷更改的不同級別,即它會降低錯誤修復和重構,但不會破壞更改。

你相信多少取決於你。您是否相信軟件包所有者在進行錯誤修復時不會引入重大更改?你相信你的測試能夠解決任何問題嗎?如果沒有,那麼你會希望在版本之前沒有任何符號來獲得確切的版本。你也可以shrinkwrap你的依賴。

編輯:關於package.json中〜,^和其他符號的含義的更多信息,請參見https://github.com/isaacs/node-semver。對於這個特定的情況下:

〜1.2:=> = 1.2.0-0 < 1.3.0-0 「的任何版本開始用1.2」

^1.2:=> = 1.2.0-0 < 2.0.0-0「與1.2兼容的任何版本」

相關問題