你會發現很多項目的依賴包版本號前面會加上~,或者是^,以Angular2為例:
- 那么~和^的作用和區別是什么呢?
~會匹配最近的小版本依賴包,比如~1.2.3會匹配所有1.2.x版本,但是不包括1.3.0
^會匹配最新的大版本依賴包,比如^1.2.3會匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
詳細可參考http://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json
那么該如何選擇呢?當然你可以指定特定的版本號,直接寫1.2.3,前面什么前綴都沒有,這樣固然沒問題,但是如果依賴包發布新版本修復了一些小bug,那么需要手動修改package.json文件;~和^則可以解決這個問題。
但是需要注意^版本更新可能比較大,會造成項目代碼錯誤,比如這篇文章(http://blog.csdn.net/u014291497/article/details/54427103)的問題就是因為package.json使用^1.5.7造成的,1.6版本的包與現有代碼不兼容。
所以建議使用~來標記版本號,這樣可以保證項目不會出現大的問題,也能保證包中的小bug可以得到修復。
參考鏈接:Node and Npm Version Numbering: Guide and Best Practices