package.json管理依賴包版本詳解_第1頁
package.json管理依賴包版本詳解_第2頁
package.json管理依賴包版本詳解_第3頁
package.json管理依賴包版本詳解_第4頁
package.json管理依賴包版本詳解_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第package.json管理依賴包版本詳解目錄npm版本號定義package.json怎么識別依賴版本不要太相信npm包的版本號dependencies、devDependencies與peerDependenciesdependenciesdevDependenciespeerDependencies參考

npm版本號定義

版本格式:X.Y.Z[-string]其含義為:

X:主版本號Y:次版本號Z:修正版本號string:先行版本號或版本編譯信息

舉個例子:

6.3.2-alpha的含義為:

主版本號6,有6次不可向下兼容的更新迭代。

次版本號3,有3次小的功能迭代。6.*.*=6.3.2的依賴聲明,都可以安裝此新包。

修正版本號2,有2次bug修改或其他非重大功能的修改。6.*.*=6.3.2的依賴聲明,都可以安裝此新包。

先行版本號alpha,表示處理試驗階段。

擴展閱讀:語義化版本2.0.0

package.json怎么識別依賴版本

將按下述代碼進行闡釋:

"vue":"~2.5.22",

"vue-class-component":"^6.0.0",

"vue-router":"3.0.1",

"express":"latest",

"mongoose":"*",

符號^:鎖定主版本,可更新次版本號、修正版本號和先行版本號例如vue-class-component:^6.0.0,安裝依賴時,可以安裝符合6.*.*的任意版本,只要主版本號是6即可。符號~:鎖定主版本號和次版本號,可更新修正版本號和先行版本號例如vue:~2.5.22,安裝依賴時,可以安裝符合2.5.*的任意版本??辗枺烘i定所有版本號例如vue-router:3.0.1,只能安裝版本為3.0.1的依賴包。符號*:定義某個版本號范圍例如vue-router:3.0.*,可以安裝3.0固定的任意版本,比如3.0.1、3.0.2。latest:安裝最新的穩(wěn)定版本

例如express:latest,可以安裝4.18.1(2025.06.13最新版本)。

*:安裝最新發(fā)布的版本,不一定是穩(wěn)定版本

例如mongoose:*,可以安裝6.0.0-rc2、3.9.7等。

GitURL:使用Git上發(fā)布的包

引用格式:protocol://[user[:password]@]hostname[:port][:][/]path[#commit-ish|#semver:semver]

"test":"git+ssh://git@:npm/cli.git#v1.0.27"

擴展閱讀:npmdocs-dependencies

不要太相信npm包的版本號

如題,這個是血的教訓換來的經(jīng)驗。

筆者在使用system.js時,使用的版本限制是:system.js:^6.3.2。

在安裝依賴的時候,意外安裝了6.3.2的版本,導致項目運行出錯。

原因就是system.js作者,沒有按照semver規(guī)范,進行版本號命名,導致筆者的項目,引入了不可向下兼容的更新,進而使項目運行出錯。

dependencies、devDependencies與peerDependencies

dependencies

生產(chǎn)環(huán)境中使用到的依賴,統(tǒng)一安裝在dependencies下。

舉個例子:

"dependencies":{

"chalk":"^2.4.2",

"commander":"^3.0.0",

"fs-extra":"^8.1.0",

"inquirer":"^6.5.0",

"mem-fs":"^1.1.3",

"mem-fs-editor":"^6.0.0",

"shelljs":"^0.8.3"

上述代碼,是筆者做的cli工具包的package.json中的片段。

shelljs用于操作文件,如果改在devDependencies聲明,則用戶安裝當前工具包后,運行會報錯。

因為devDependencies字段聲明的依賴,在npminstall工具包時,是不會安裝的。

必須在dependencies字段中聲明,才會被安裝。

devDependencies

生產(chǎn)環(huán)境不需要使用的依賴,都需要安裝在peerDependencies下。

因為生產(chǎn)環(huán)境下,是不會安裝devDependencies字段下的依賴的。

舉個例子:

"devDependencies":{

"@commitlint/cli":"^8.1.0",

"@commitlint/config-conventional":"^8.1.0",

"commitizen":"^4.0.3",

"commitlint-config-cz":"^0.12.1",

"cz-customizable":"^6.2.0",

"standard-version":"^7.0.0"

上述代碼,是筆者做的cli工具包的package.json中的片段。

commitizen是筆者用于規(guī)范Git提交規(guī)范的依賴包,只在開發(fā)環(huán)境中使用,所以在devDependencies中聲明。

peerDependencies

當開發(fā)一些插件和工具包時,對使用方的運行環(huán)境的依賴包版本有要求,可以使用peerDependencies字段進行聲明。

舉個例子:

{

"name":"tea-latte",

"version":"1.3.5",

"peerDependencies":{

"tea":"2.x"

當前工具tea-latte,依賴tea包。而且,要求tea包是主版本2。

當不滿足要求時,控制臺會進行報錯處理。

注意

npmv7版本,peerDependencies會默認安裝。

npmv3到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論