package.json管理依賴(lài)包版本詳解
npm版本號(hào)定義
版本格式:X.Y.Z[-string]其含義為:
- X:主版本號(hào)
- Y:次版本號(hào)
- Z:修正版本號(hào)
- string: 先行版本號(hào)或版本編譯信息
舉個(gè)例子:
6.3.2-alpha的含義為:
主版本號(hào)6,有6次不可向下兼容的更新迭代。
次版本號(hào)3,有3次小的功能迭代。6.*.* <=6.3.2的依賴(lài)聲明,都可以安裝此新包。
修正版本號(hào)2,有2次bug修改或其他非重大功能的修改。6.*.* <=6.3.2的依賴(lài)聲明,都可以安裝此新包。
先行版本號(hào)alpha,表示處理試驗(yàn)階段。
擴(kuò)展閱讀:語(yǔ)義化版本 2.0.0
package.json怎么識(shí)別依賴(lài)版本
將按下述代碼進(jìn)行闡釋?zhuān)?/p>
"vue": "~2.5.22", "vue-class-component": "^6.0.0", "vue-router": "3.0.1", "express": "latest", "mongoose": "*",
- 符號(hào)^:鎖定主版本,可更新次版本號(hào)、修正版本號(hào)和先行版本號(hào)
- 例如"vue-class-component": "^6.0.0",安裝依賴(lài)時(shí),可以安裝符合6.*.* 的任意版本,只要主版本號(hào)是6即可。
- 符號(hào)~:鎖定主版本號(hào)和次版本號(hào),可更新修正版本號(hào)和先行版本號(hào)
- 例如"vue": "~2.5.22",安裝依賴(lài)時(shí),可以安裝符合2.5.*的任意版本。
- 空符號(hào):鎖定所有版本號(hào)
- 例如"vue-router": "3.0.1",只能安裝版本為3.0.1的依賴(lài)包。
- 符號(hào)*:定義某個(gè)版本號(hào)范圍
- 例如vue-router": "3.0.*",可以安裝3.0固定的任意版本,比如3.0.1、3.0.2。
- latest:安裝最新的穩(wěn)定版本
例如"express": "latest",可以安裝4.18.1 (2022.06.13最新版本)。
*:安裝最新發(fā)布的版本,不一定是穩(wěn)定版本
例如"mongoose": "*",可以安裝6.0.0-rc2、3.9.7等。
Git URL:使用Git上發(fā)布的包
引用格式: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
擴(kuò)展閱讀:npm docs - dependencies
不要太相信npm包的版本號(hào)
如題,這個(gè)是血的教訓(xùn)換來(lái)的經(jīng)驗(yàn)。
筆者在使用system.js時(shí),使用的版本限制是:system.js: "^6.3.2"。
在安裝依賴(lài)的時(shí)候,意外安裝了> 6.3.2的版本,導(dǎo)致項(xiàng)目運(yùn)行出錯(cuò)。
原因就是system.js作者,沒(méi)有按照semver規(guī)范,進(jìn)行版本號(hào)命名,導(dǎo)致筆者的項(xiàng)目,引入了不可向下兼容的更新,進(jìn)而使項(xiàng)目運(yùn)行出錯(cuò)。
dependencies、devDependencies與peerDependencies
dependencies
生產(chǎn)環(huán)境中使用到的依賴(lài),統(tǒng)一安裝在dependencies下。
舉個(gè)例子:
"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聲明,則用戶(hù)安裝當(dāng)前工具包后,運(yùn)行會(huì)報(bào)錯(cuò)。
因?yàn)閐evDependencies字段聲明的依賴(lài),在npm install 工具包時(shí),是不會(huì)安裝的。
必須在dependencies字段中聲明,才會(huì)被安裝。
devDependencies
生產(chǎn)環(huán)境不需要使用的依賴(lài),都需要安裝在peerDependencies下。
因?yàn)樯a(chǎn)環(huán)境下,是不會(huì)安裝devDependencies字段下的依賴(lài)的。
舉個(gè)例子:
"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ī)范的依賴(lài)包,只在開(kāi)發(fā)環(huán)境中使用,所以在devDependencies中聲明。
peerDependencies
當(dāng)開(kāi)發(fā)一些插件和工具包時(shí),對(duì)使用方的運(yùn)行環(huán)境的依賴(lài)包版本有要求,可以使用peerDependencies字段進(jìn)行聲明。
舉個(gè)例子:
{ "name": "tea-latte", "version": "1.3.5", "peerDependencies": { "tea": "2.x" } }
當(dāng)前工具tea-latte,依賴(lài)tea包。而且,要求tea包是主版本2。
當(dāng)不滿(mǎn)足要求時(shí),控制臺(tái)會(huì)進(jìn)行報(bào)錯(cuò)處理。
注意
npm v7版本, peerDependencies會(huì)默認(rèn)安裝。
npm v3 到 npm v6版本, peerDependencies不會(huì)自動(dòng)安裝。
參考
以上就是package.json管理依賴(lài)包版本詳解的詳細(xì)內(nèi)容,更多關(guān)于package.json管理依賴(lài)包版本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- package.json與package-lock.json的區(qū)別及詳細(xì)解釋
- package.json中browser?module?main字段優(yōu)先級(jí)對(duì)比
- 詳解npm與package.json之間的聯(lián)系
- npm?start運(yùn)行項(xiàng)目過(guò)程package.json字段詳解
- 一文詳解package.json配置
- package.json依賴(lài)環(huán)境相關(guān)屬性詳解
- 高級(jí)前端必會(huì)的package.json字段知識(shí)詳解
- package.json與package-lock.json創(chuàng)建及使用詳解
相關(guān)文章
javascript for循環(huán)設(shè)法提高性能
讓你的for循環(huán)提升性能的寫(xiě)法,需要的朋友可以參考下。2010-02-02JavaScript中兩個(gè)感嘆號(hào)的作用說(shuō)明
用兩個(gè)感嘆號(hào)的作用就在于,如果明確設(shè)置了o中flag的值(非null/undefined/0""/等值),自然test就會(huì)取跟o.flag一樣的值;如果沒(méi)有設(shè)置,test就會(huì)默認(rèn)為false,而不是null或undefined2011-12-12詳解JavaScript對(duì)數(shù)組操作(添加/刪除/截取/排序/倒序)
這篇文章主要介紹了JavaScript對(duì)數(shù)組操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04實(shí)現(xiàn)div內(nèi)部滾動(dòng)條滾動(dòng)到底部和頂部的代碼
下面筆者就為大家分享一篇實(shí)現(xiàn)div內(nèi)部滾動(dòng)條滾動(dòng)到底部和頂部的代碼,代碼簡(jiǎn)潔,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-11-11Next.js使用getServerSideProps進(jìn)行服務(wù)器端渲染demo
這篇文章主要為大家介紹了Next.js使用getServerSideProps進(jìn)行服務(wù)器端渲染demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12