這篇文章聊聊前端專案的實戰中,是如何使用package.json對依賴套件進行版本管理的。
不同規則,對依賴的管理會產生什麼影響。
版本格式: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
將按下述代碼進行解釋:
"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
:安裝最新的穩定版本
例如"express": "latest"
,可以安裝4.18.1
(2022.06.13最新版本)。
#*
:安裝最新發布的版本,不一定是穩定版本
,可以安裝6.0.0-rc2
、
等。
"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
延伸閱讀:
npm docs - dependencies#不要太相信npm套件的版本號碼!
如題,這個是血的教訓換來的經驗。筆者在使用
時,使用的版本限制是:system.js: "^6.3.2"
。
在安裝依賴的時候,意外安裝了> 6.3.2的版本,導致專案運行出錯。
dependencies、devDependencies與peerDependencies
生產環境中使用到的依賴,統一安裝在
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" }
上述程式碼,是筆者所做的
clipackage.json
中的片段。
shelljs用於操作文件,如果改在
devDependencies聲明,則使用者安裝目前工具包後,運行會報錯。 ###因為###devDependencies###欄位宣告的依賴,在###npm install 工具包###時,是不會安裝的。必須在###dependencies###欄位中聲明,才會被安裝。 ###生产环境不需要使用的依赖,都需要安装在devDependencies
下。
因为生产环境下,是不会安装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
是笔者用于规范Git
提交规范的依赖包,只在开发环境中使用,所以在devDependencies
中声明。
当开发一些插件和工具包时,对使用方的运行环境的依赖包版本有要求,可以使用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
不会自动安装。
更多node相关知识,请访问:nodejs 教程!
以上是聊聊如何使用package.json對依賴套件進行版本管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!