最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

package.json管理依賴包版本詳解

 更新時間:2022年07月07日 14:58:36   作者:我是leon  
本文講述前端項目的實戰(zhàn)中,是如何使用package.json對依賴包進行版本管理的,以及不同規(guī)則對依賴的管理會產生什么影響

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.*的任意版本。
  • 空符號:鎖定所有版本號
  • 例如"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 (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"

擴展閱讀:npm docs - dependencies

不要太相信npm包的版本號

如題,這個是血的教訓換來的經驗。

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

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

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

dependencies、devDependencies與peerDependencies

dependencies

生產環(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字段聲明的依賴,在npm install 工具包時,是不會安裝的。

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

devDependencies

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

因為生產環(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。

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

注意

npm v7版本, peerDependencies會默認安裝。

npm v3 到 npm v6版本, peerDependencies不會自動安裝。

參考

npm Docs

語義化版本 2.0.0

以上就是package.json管理依賴包版本詳解的詳細內容,更多關于package.json管理依賴包版本的資料請關注腳本之家其它相關文章!

相關文章

  • JavaScript獲取某年某月的最后一天附截圖

    JavaScript獲取某年某月的最后一天附截圖

    這篇文章主要介紹了JavaScript如何獲取某年某月的最后一天,需要的朋友可以參考下
    2014-06-06
  • 如何在CocosCreator中做一個List

    如何在CocosCreator中做一個List

    這篇文章主要介紹了如何在CocosCreator中做一個List,對List列表感興趣的同學,不妨來試驗一下
    2021-04-04
  • JavaScript如何刪除字符串中子字符串

    JavaScript如何刪除字符串中子字符串

    本文介紹了如何從?JavaScript?中的字符串中刪除子字符串,并提供了兩種常用的方法:replace()?方法和?split()?方法,結合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-05-05
  • JavaScript中的appendChild()方法示例詳解

    JavaScript中的appendChild()方法示例詳解

    這篇文章主要介紹了JavaScript中的appendChild()方法,appendChild()方法是向節(jié)點添加最后一個子節(jié)點,也可以使用此方法從一個元素向另一個元素移動元素,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • Tesseract.js使用純js實現的OCR文字識別

    Tesseract.js使用純js實現的OCR文字識別

    Tesseract.js是流行的Tesseract OCR引擎的純Javascript端口,這個庫支持100多種語言,自動文本定位和腳本檢測,一個簡單的界面,用于閱讀段落、單詞和字符邊界框,Tesseract.js既可以在瀏覽器中運行,也可以在帶有NodeJS的服務器上運行
    2023-10-10
  • 微信小程序通過自定義animate-numbers組件實現進入頁面時數字跳動效果

    微信小程序通過自定義animate-numbers組件實現進入頁面時數字跳動效果

    文章介紹了如何在微信小程序中實現進入頁面時的數字跳動效果,通過自定義一個名為`animate-numbers`的組件來實現這一功能,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-01-01
  • JavaScript中普通屬性和排序屬性詳解

    JavaScript中普通屬性和排序屬性詳解

    JavaScript屬性是對象中的特性,用于描述對象的狀態(tài),每個JavaScript對象都有一組屬性,可以通過點號(.)或方括號([])訪問和操作這些屬性,本文將給大家講講JavaScript中你所不知道的普通屬性和排序屬性,需要的朋友可以參考下
    2023-09-09
  • Cropper.js進階實現圖片旋轉裁剪處理功能示例

    Cropper.js進階實現圖片旋轉裁剪處理功能示例

    這篇文章主要為大家介紹了Cropper.js進階實現圖片旋轉裁剪功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • layui實現數據表格點擊搜索功能

    layui實現數據表格點擊搜索功能

    這篇文章主要為大家詳細介紹了layui實現數據表格點擊搜索功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 解決uni-app報錯Error:?read?EBADF?at?Pipe?.?onStreamRead...

    解決uni-app報錯Error:?read?EBADF?at?Pipe?.?onStreamRead...

    這篇文章主要介紹了uni-app報錯Error:?read?EBADF?at?Pipe?.?onStreamRead...解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

清流县| 社会| 闽侯县| 呈贡县| 商河县| 安仁县| 安仁县| 建德市| 平凉市| 石门县| 顺义区| 遂宁市| 化德县| 房产| 龙江县| 濮阳县| 丰原市| 鄂伦春自治旗| 满洲里市| 沙田区| 崇信县| 上虞市| 上犹县| 呼和浩特市| 呼和浩特市| 明水县| 葫芦岛市| 蕲春县| 台湾省| 青神县| 开原市| 昔阳县| 略阳县| 长泰县| 塘沽区| 遂平县| 彭阳县| 赞皇县| 周口市| 陇川县| 侯马市|