国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于package.json管理依賴包版本的詳解

3403771864 / 790人閱讀

  我們先說下,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的依賴聲明,都可以安裝此新包。

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

  先行版本號(hào)alpha,表示處理試驗(yàn)階段。

  擴(kuò)展閱讀:語義化版本 2.0.0

  package.json怎么識(shí)別依賴版本

  現(xiàn)在我們看看具體的代碼:

  "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",安裝依賴時(shí),可以安裝符合6.*.* 的任意版本,只要主版本號(hào)是6即可。

  符號(hào)~:鎖定主版本號(hào)和次版本號(hào),可更新修正版本號(hào)和先行版本號(hào)

  例如"vue": "~2.5.22",安裝依賴時(shí),可以安裝符合2.5.*的任意版本。

  空符號(hào):鎖定所有版本號(hào)

  例如"vue-router": "3.0.1",只能安裝版本為3.0.1的依賴包。

  符號(hào)*:定義某個(gè)版本號(hào)范圍

  例如vue-router": "3.0.*",可以安裝3.0固定的任意版本,比如3.0.1、3.0.2。

  latest:安裝最新的穩(wěn)定版本

1.jpg

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

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

2.jpg

  例如"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

  在這里要提醒下,請(qǐng)千萬不必相信npm包的版本號(hào),這樣說就是血淚教訓(xùn)啊。  

  我們知道筆者在使用system.js時(shí),使用的版本限制是:system.js: "^6.3.2"。

  在安裝依賴的時(shí)候,意外安裝了> 6.3.2的版本,導(dǎo)致項(xiàng)目運(yùn)行出錯(cuò)。

  原因就是system.js作者,沒有按照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)境中使用到的依賴,統(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聲明,則用戶安裝當(dāng)前工具包后,運(yùn)行會(huì)報(bào)錯(cuò)。

  因?yàn)閐evDependencies字段聲明的依賴,在npm install 工具包時(shí),是不會(huì)安裝的。

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

  devDependencies

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

  因?yàn)樯a(chǎn)環(huán)境下,是不會(huì)安裝devDependencies字段下的依賴的。

  現(xiàn)在看看:

  "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

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

  舉個(gè)例子:

  {
  "name": "tea-latte",
  "version": "1.3.5",
  "peerDependencies": {
  "tea": "2.x"
  }
  }

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

  當(dāng)不滿足要求時(shí),控制臺(tái)會(huì)進(jìn)行報(bào)錯(cuò)處理。

  注意

  npm v7版本, peerDependencies會(huì)默認(rèn)安裝。

  npm v3 到 npm v6版本,peerDependencies不會(huì)自動(dòng)安裝。

  參考

  npm Docs

  語義化版本 2.0.0

  本文關(guān)于package.json管理依賴包版本的詳解已講述完畢,歡迎大家關(guān)注更多后續(xù)精彩內(nèi)容。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128815.html

相關(guān)文章

  • npm常用命令及參數(shù)詳解

    摘要:本人菜鳥一枚,一直也沒理解這個(gè),不過看到了就記錄一下吧,萬一哪天用到了,說不準(zhǔn)就懂了或參數(shù)的意思是精確的安裝指定版本的模塊,細(xì)心的同學(xué)會(huì)發(fā)現(xiàn)字段里每個(gè)模塊版本號(hào)前面的不見鳥。。。 NPM命令詳解平時(shí)工作中經(jīng)常用npm安裝,每次用的時(shí)候有些命令都要去查一次,這次就自己把這些命令整理下,讓自己可以多記住一些。對(duì)于還不知道NPM是什么的同學(xué)請(qǐng)自行g(shù)oogle吧 這里我就不多BB了,主要記錄...

    DevWiki 評(píng)論0 收藏0
  • Node.js知識(shí)點(diǎn)詳解(一)基礎(chǔ)部分

    摘要:基礎(chǔ)的端到端的基準(zhǔn)測(cè)試顯示大約比快八倍。所謂單線程,就是指一次只能完成一件任務(wù)。在服務(wù)器端,異步模式甚至是唯一的模式,因?yàn)閳?zhí)行環(huán)境是單線程的,如果允許同步執(zhí)行所有請(qǐng)求,服務(wù)器性能會(huì)急劇下降,很快就會(huì)失去響應(yīng)。 模塊 Node.js 提供了exports 和 require 兩個(gè)對(duì)象,其中 exports 是模塊公開的接口,require 用于從外部獲取一個(gè)模塊的接口,即所獲取模塊的 e...

    whjin 評(píng)論0 收藏0
  • 你想知道關(guān)于package-lock.json一切,但是太害怕了問了?

    摘要:內(nèi)容結(jié)構(gòu)是中列出的每個(gè)依賴項(xiàng)的大型列表,應(yīng)安裝的特定版本,模塊的位置,驗(yàn)證模塊完整性的哈希,它需要的包列表,以及依賴項(xiàng)列表。期望與真實(shí)行為之間的這種沖突在中引發(fā)了一個(gè)非常有趣的問題線索。此更改是作為的一部分發(fā)布的,該版本于年月日上線。 showImg(https://segmentfault.com/img/bVbkuXN?w=1440&h=1080); 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳Git...

    OBKoro1 評(píng)論0 收藏0
  • 深入淺出Node.js

    摘要:深入淺出一直想致力于寫一篇關(guān)于廣義講解系統(tǒng)的文章,苦于時(shí)間有限,資源有限。事件驅(qū)動(dòng)機(jī)制是通過內(nèi)部單線程高效率地維護(hù)事件循環(huán)隊(duì)列來實(shí)現(xiàn)的,沒有多線程的資源占用和上下文的切換。 深入淺出Node.js 一直想致力于寫一篇關(guān)于廣義講解Node.js系統(tǒng)的文章,苦于時(shí)間有限,資源有限。這篇文章是在結(jié)合自己的學(xué)習(xí)心得以及與行業(yè)大佬共同探討下爭(zhēng)對(duì)于熟練掌握J(rèn)S語言后的廣義Node.js.至于為什么...

    oujie 評(píng)論0 收藏0
  • 深入淺出Node.js

    摘要:深入淺出一直想致力于寫一篇關(guān)于廣義講解系統(tǒng)的文章,苦于時(shí)間有限,資源有限。事件驅(qū)動(dòng)機(jī)制是通過內(nèi)部單線程高效率地維護(hù)事件循環(huán)隊(duì)列來實(shí)現(xiàn)的,沒有多線程的資源占用和上下文的切換。 深入淺出Node.js 一直想致力于寫一篇關(guān)于廣義講解Node.js系統(tǒng)的文章,苦于時(shí)間有限,資源有限。這篇文章是在結(jié)合自己的學(xué)習(xí)心得以及與行業(yè)大佬共同探討下爭(zhēng)對(duì)于熟練掌握J(rèn)S語言后的廣義Node.js.至于為什么...

    MadPecker 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<