
前端(vue)入門到精通課程:進入學習
版本格式: XYZ[-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最新版本)。
* :安裝最新發布的版本,不一定是穩定版本

例如"mongoose": "*" ,可以安裝6.0.0-rc2 、 3.9.7等。
Git URL :使用Git上發佈的套件
引用格式: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
"test": "git+ssh://[email protected]:npm/cli.git#v1.0.27"
擴充閱讀:npm docs - dependencies
如題,這是血的教訓換來的經驗。
作者在使用system.js時,使用的版本限制是: system.js: "^6.3.2" 。
在安裝依賴的時候,意外安裝了> 6.3.2的版本,導致專案運行出錯。
原因就是system.js作者,沒有按照semver規範,進行版本號命名,導致筆者的項目,引入了不可向下兼容的更新,進而使項目運行出錯。
生產環境中使用到的依賴,統一安裝在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下。
因為在生產環境下,是不會安裝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不會自動安裝。