?
package.json一般也就長這么模樣:
?
{"name": "","description": "","version": "4.17.1","author": "","contributors": [],"license": "MIT","repository": "","homepage": "","keywords": [],"dependencies": {"accepts": "~1.3.7","array-flatten": "1.1.1","body-parser": "^1.19.0","content-disposition": "0.5.3","content-type": "~1.0.4","cookie": "^0.4.0","cookie-signature": "1.0.6","debug": "2.6.9","depd": "~1.1.2","encodeurl": "~1.0.2"},"devDependencies": {},"engines": {"node": ">= 0.10.0"},"files": [],"scripts": {"lint": "eslint .","test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/","test-ci": "...","test-cov": "...","test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"}
}
?
其中十分重要的一項就是dependencies,也就是依賴項,每次npm install
的時候下載下來的東東都是根據這里來的。
?
很顯然這個dependencies對象中的key是依賴項的名稱,值則是版本號,但是版本號前面有的啥也沒有,比如:“array-flatten”: “1.1.1”,有的有波浪號,比如:“accepts”: “~1.3.7”,也有的有插入符號,比如:“body-parser”: “^1.19.0”。那這些到底有啥區別呢?
?
其實也比較簡單:
?
波浪號?匹配最新補丁版本號,也就是版本號的第三個數字。比如~1.2.3將匹配所有1.2.x版本,但將在1.3.0上停止。
?
插入符號^ 更寬松。 它匹配的是最新次要版本號,也就是第二個數字。比如:^ 1.2.3將匹配任何1.x.x版本,包括1.3.0,但將在2.0.0上停止。
?
前面啥符號也沒有,很顯然意思就是確定唯一指定的版本號。
?
當然這里還可以寫>,>=,<,<=,比如:
?
"dependencies": {"accepts": "~1.3.7","array-flatten": "1.1.1","body-parser": "^1.19.0","content-disposition": ">0.5.3","content-type": "~1.0.4","cookie": "^0.4.0","cookie-signature": "<1.0.6","debug": ">=2.6.9","depd": "~1.1.2","encodeurl": "<1.0.2"}
?
意思也很簡單,就是大于,或者大于等于,小于或者小于等于后面的版本號。
?
如果前面是星號*,那意思就是匹配任何版本。
?
如果版本號的值是latest
,那意思安裝的永遠是最新發布的版本。
?
如果只匹配版本號的其中一位,除了上面的做法外,還有一種,那就是用x
,比如:1.2.x,就可以匹配1.2.1,1.2.2,…,但是1.3.0肯定是不行的,這大家都懂,不用多解釋。
?
最后再舉個栗子吧:
?
"dependencies": {"accepts": "1.3.x"}
---------------------
作者:K.Sun
來源:CSDN
原文:https://blog.csdn.net/sinat_36246371/article/details/94621109
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件