이 글에서는 package.json을 사용하여 실제 프런트엔드 프로젝트에서 종속 패키지의 버전 관리를 수행하는 방법에 대해 설명합니다.
다양한 규칙은 종속성 관리에 어떤 영향을 미치나요?
버전 형식: X.Y.Z[-string]
X.Y.Z[-string]
其含义为:
举个例子:
6.3.2-alpha
的含义为:
主版本号6,有6次不可向下兼容的更新迭代。
次版本号3,有3次小的功能迭代。6.*.*
修正版本号2,有2次bug修改或其他非重大功能的修改。6.*.*
先行版本号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>]</semver></commit-ish></path></port></hostname></password></user></protocol>
"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
如题,这个是血的教训换来的经验。
笔者在使用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
의미:
6.*.*
6.*.*
alpha
는 실험적인 처리 단계를 나타냅니다. 🎜"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" }
^
: 기본 버전을 잠그고 부 버전 번호, 수정된 버전 번호 및 고급 버전 번호를 업데이트할 수 있습니다.🎜🎜예: "vue-class- component": "^6.0.0"
, 종속성을 설치할 때 기본 버전이라면 6.*.*
를 준수하는 모든 버전을 설치할 수 있습니다. 숫자는 6입니다. 🎜~
: 주 버전 번호와 부 버전 번호를 잠그고 수정된 버전 번호와 고급 버전 번호를 업데이트합니다.🎜🎜예를 들어 "vue": "~2.5.22"
, 종속성 설치 시 2.5.*
를 준수하는 모든 버전을 설치할 수 있습니다. 🎜빈 기호
: 모든 버전 번호 잠금🎜🎜예: "vue-router": "3.0.1" code > 버전이 3.0.1
인 종속 패키지만 설치할 수 있습니다. 🎜
Symbol*
: 특정 버전 번호 범위 정의🎜🎜예: vue-router": "3.0.*" code>, 3.0.1
, 3.0.2
🎜
최신
: 최신 안정 버전 설치🎜🎜🎜"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> #semver:< ;semver>]</path></port></hostname></password></user></protocol>
🎜{ "name": "tea-latte", "version": "1.3.5", "peerDependencies": { "tea": "2.x" } }
system.js
를 사용할 때 사용되는 버전 제한은 system.js: "^6.3.2"
입니다. 🎜🎜종속성을 설치할 때 > 6.3.2
버전이 실수로 설치되어 프로젝트가 제대로 실행되지 않았습니다. 🎜🎜이유는 system.js
작성자가 semver
사양에 따라 버전 번호를 지정하지 않아 이전 버전과 호환되지 않는 버전이 도입되었기 때문입니다. 내 프로젝트에 > 업데이트하면 프로젝트가 잘못 실행됩니다. 🎜종속성
아래에 균일하게 설치됩니다. 🎜🎜예: 🎜rrreee🎜위 코드는 작성자가 만든 cli
툴킷의 package.json
조각입니다. 🎜shelljs
는 파일을 작동하는 데 사용됩니다. 명령문이 devDependency
로 변경되면 사용자가 현재 도구 패키지를 설치한 후 오류가 보고됩니다. 🎜devDependency
필드에 선언된 종속성은 npm 설치 도구 패키지
시 설치되지 않기 때문입니다. 설치하기 전에 종속성
필드에서 선언해야 합니다. 🎜生产环境不需要使用的依赖,都需要安装在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 중국어 웹사이트의 기타 관련 기사를 참조하세요!