溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

package.json管理依賴包版本實例分析

發(fā)布時間:2022-07-08 09:44:30 來源:億速云 閱讀:179 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹了package.json管理依賴包版本實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇package.json管理依賴包版本實例分析文章都會有所收獲,下面我們一起來看看吧。

    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)定版本

    package.json管理依賴包版本實例分析

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

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

    package.json管理依賴包版本實例分析

    例如"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包的版本號

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

    筆者在使用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不會自動安裝。

    關于“package.json管理依賴包版本實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“package.json管理依賴包版本實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

    AI