npm 包发布
-
版本标签
在 npm 中,版本标签(tags)用于区分不同的发布版本,例如稳定版本、beta 版本、alpha 版本等。
正常流程:alpha 版本 => beta 版本 => rc 版本 => 稳定版本
以下是一些常见的版本标签及其用途:
- latest:默认标签,表示最新的稳定版本。
- 用户通过 npm install your-package 安装时,会默认安装这个版本
- 发布:正常 npm 发布 X.Y.Z 版本号即可【可以通过命令修改 latest 指向的版本:npm dist-tag add your-package@X.Y.Z latest,正常情况下不会需要这种操作 】
- 适用场景:用于生产环境,确保用户获得最稳定、可靠的版本。
- 适用环境:适用于需要稳定性和可靠性的生产环境。
- beta:表示 beta 版本,通常用于测试新功能或更新,但还不是稳定版本。
- 用户可以通过 npm install your-package@X.Y.Z-beta.xxx 来安装这个版本
- 发布: npm 发布 X.Y.Z-beta.xxx 版本号,发布时一定要指定 tag 为 beta,防止其覆盖 latest 标签,即: npm publish --tag beta
- 适用场景:用于测试新功能和改进,提供早期用户反馈。
- 适用环境:适用于测试环境和愿意尝试新功能的用户群体。
- alpha:表示 alpha 版本,通常用于更早期的测试,可能包含更多未完成或不稳定的功能。
- 用户可以通过 npm install your-package@X.Y.Z-alpha.xxx 来安装这个版本
- 发布: npm 发布 X.Y.Z-alpha.xxx 版本号,发布时一定要指定 tag 为 alpha,防止其覆盖 latest 标签,即: npm publish --tag alpha
- 适用场景:用于最早期的功能测试,收集开发者的初步反馈。
- 适用环境:适用于开发环境和内部测试,不建议用于生产环境。
- next:表示下一个即将发布的版本,通常用于预发布测试。
- 用户可以通过 npm install your-package@X.Y.Z-next.xxx 来安装这个版本
- 发布: npm 发布 X.Y.Z-next.xxx 版本号,发布时一定要指定 tag 为 next,防止其覆盖 latest 标签,即: npm publish --tag next
- 适用场景:用于预发布测试,验证新版本的稳定性和兼容性。
- 适用环境:适用于测试环境和准备升级到最新版本的用户。
- rc(Release Candidate):表示候选发布版本,接近稳定版本,经过进一步测试后可能会成为正式版本。
- 用户可以通过 npm install your-package@X.Y.Z-rc.xxx 来安装这个版本
- 发布: npm 发布 X.Y.Z-rc.xxx 版本号,发布时一定要指定 tag 为 rc,防止其覆盖 latest 标签,即: npm publish --tag rc
- 适用场景:用于最终测试阶段,确保没有严重问题后发布为正式版本。
- 适用环境:适用于生产环境的最终测试阶段,适合需要提前验证即将发布的稳定版本的用户。
- latest:默认标签,表示最新的稳定版本。
-
软件版本控制(patch、minor 和 major 是三个常用的版本号级别)
总结
- Patch:修复 bug,小改动,版本号最后一位增加。
- Minor:增加新功能,向后兼容,版本号中间一位增加。
- Major:重大更新,可能不向后兼容,版本号第一位增加。
-
Patch(补丁版本):
版本上线后更新补丁修复也是增加此版本号
- 表示:修复了 bug 或进行了小的改进,不影响向后兼容性。
- 版本号格式:
X.Y.Z
中的Z
。 - 示例:从
1.0.0
到1.0.1
。 - 适用场景:只修复了某个 bug 或做了小的、无破坏性的改动。
- 使用:
npm version patch
-
Minor(次要版本):
- 表示:添加了新功能,但保持向后兼容性,不影响现有功能的使用。
- 版本号格式:
X.Y.Z
中的Y
。 - 示例:从
1.0.0
到1.1.0
。 - 适用场景:增加了新的功能或特性,但没有破坏现有的 API 或功能。
- 使用:
npm version minor
-
Major(主要版本):
- 表示:进行了重大更改,可能会破坏向后兼容性。
- 版本号格式:
X.Y.Z
中的X
。 - 示例:从
1.0.0
到2.0.0
。 - 适用场景:对软件进行了重大改进或重构,可能会引入破坏性的更改,需要用户做出相应的调整。
- 使用:
npm version major
-
npm version 命令
npm version
命令用于管理和更新 npm 包的版本号,并执行与版本控制相关的操作。格式:npm version [
| major | minor | patch | premajor | preminor | prepatch | prerelease [--preid= ] | from-git] 以下是
npm version
命令的所有参数及其用途:-
参数说明
-
newversion
- 作用:指定一个新的版本号,直接将包版本号更新为这个值。
- 示例:
npm version 2.0.0
-
major
- 作用:将主版本号(
X.Y.Z
中的X
)增加 1,并将次版本号Y
和补丁版本号Z
重置为 0。 - 示例:从
1.0.0
更新到2.0.0
- 命令:
npm version major
- 作用:将主版本号(
-
minor
- 作用:将次版本号(
X.Y.Z
中的Y
)增加 1,并将补丁版本号Z
重置为 0。 - 示例:从
1.0.0
更新到1.1.0
- 命令:
npm version minor
- 作用:将次版本号(
-
patch
- 作用:将补丁版本号(
X.Y.Z
中的Z
)增加 1。 - 示例:从
1.0.0
更新到1.0.1
- 命令:
npm version patch
- 作用:将补丁版本号(
-
premajor
- 作用:将主版本号
X
增加 1,并将次版本号Y
和补丁版本号Z
重置为 0,并添加预发布标签。 - 示例:从
1.0.0
更新到2.0.0-0
- 命令:
npm version premajor
- 作用:将主版本号
-
preminor
- 作用:将次版本号
Y
增加 1,并将补丁版本号Z
重置为 0,并添加预发布标签。 - 示例:从
1.0.0
更新到1.1.0-0
- 命令:
npm version preminor
- 作用:将次版本号
-
prepatch
- 作用:将补丁版本号
Z
增加 1,并添加预发布标签。 - 示例:从
1.0.0
更新到1.0.1-0
- 命令:
npm version prepatch
- 作用:将补丁版本号
-
prerelease
-
作用:增加预发布版本号。
-
示例:从
1.0.0-0
更新到1.0.0-1
或1.0.0-1
到1.0.0-2
-
命令:
npm version prerelease
- 额外参数:
--preid=<prerelease-id>
,用于指定预发布标签的标识,如alpha
、beta
等。
- 额外参数:
-
示例:
npm version prerelease --preid=beta
会将版本号更新为1.0.0-beta.0
-
- from-git
- 作用:从现有的 Git 标签中读取版本号,并将其应用到
package.json
中。 - 命令:
npm version from-git
- 作用:从现有的 Git 标签中读取版本号,并将其应用到
-
-
其他选项
-
--no-git-tag-version
- 作用:更新
package.json
文件中的版本号,但不创建 Git 标签。 - 示例:
npm version patch --no-git-tag-version
- 作用:更新
-
--no-commit-hooks
- 作用:跳过 Git 提交钩子。
- 示例:
npm version patch --no-commit-hooks
-
--sign-git-tag
- 作用:使用 GPG 签名 Git 标签。
- 示例:
npm version patch --sign-git-tag
-
-m or --message
- 作用:为 Git 提交指定自定义消息。
- 示例:
npm version patch -m "Upgrade to %s for bug fixes"
-
-
总结
npm version
命令不仅可以更新版本号,还可以自动创建 Git 提交和标签。使用这些参数和选项,可以灵活地管理和控制 npm 包的版本更新过程。npm version
命令在更新版本号时会执行以下操作:- 更新
package.json
中的版本号。 - 提交更改到 Git 仓库。
- 创建一个新的 Git 标签。
- 更新
npm 包安装
-
package.json 安装 “your-package”:"^X.Y.Z-beta.xxx" 和 “your-package”:"X.Y.Z-beta.xxx" 区别
-
"your-package": "X.Y.Z-beta.xxx"
这种格式表示精确的版本号。当你使用这种格式时,npm 会安装或更新到确切的版本
X.Y.Z-beta.xxx
,不会安装或更新到其他版本。{ "dependencies": { "your-package": "X.Y.Z-beta.xxx" } }
-
"your-package": "^X.Y.Z-beta.xxx"
这种格式使用了
^
符号,表示允许安装或更新到兼容的版本。具体来说,^
符号允许安装或更新到主版本号不变的最新版本。对于X.Y.Z-beta.xxx
,这意味着可以安装或更新到X.Y+n.Z+m
范围内的最新稳定版本,但不会更新到(X+1).0.0
或更高版本。{ "dependencies": { "your-package": "^X.Y.Z-beta.xxx" } }
-
"your-package": "~X.Y.Z-beta.xxx"
这种格式使用了
~
符号,表示允许安装或更新到次版本号不变的最新版本。具体来说,~
符号允许安装或更新到主版本号和次版本号不变的最新版本。对于X.Y.Z-beta.xxx
,这意味着可以安装或更新到X.Y.Z+n
范围内的最新版本,但不会更新到X.Y+1.0.0
或更高版本。{ "dependencies": { "your-package": "~X.Y.Z-beta.xxx" } }
-
举例
版本号列表 1.0.1-beta.1 1.0.1 1.0.1-beta.3 1.0.2 1.0.3-beta.1 1.0.3-beta.2 1.0.4-beta.1 1.0.4 1.1.0-beta.1 1.1.3 1.1.4-beta.1 2.0.0-beta.1 使用 "your-package": "1.0.3-beta.1" npm 只会安装或更新到 1.0.3-beta.1,不会安装或更新到其他版本。 { "dependencies": { "your-package": "1.0.3-beta.1" } } 使用 "your-package": "^1.0.3-beta.1" npm 可以安装或更新到 1.0.3-beta.1、1.0.3-beta.2、1.0.4-beta.1、1.0.4、1.1.0-beta.1 和 1.1.3 和 1.1.4-beta.1,因为这些版本都在 1.Y.Z 范围内。但不会安装或更新到 2.0.0-beta.1,因为它的主版本号已经变为 2。 ⚠️注意:如果范围内有稳定版本,则会安装或更新到最新的稳定版本,即:^1.0.3-beta.1 最终安装的是 1.1.3 { "dependencies": { "your-package": "^1.0.3-beta.1" } } 使用 "your-package": "~1.0.3-beta.1" npm 可以安装或更新到 1.0.3-beta.1、1.0.3-beta.2、1.0.4-beta.1、1.0.4,因为这些版本都在 1.0.Z 范围内。,但不会安装或更新到 1.1.0-beta.1 及更高版本,因为它们超出了次版本号范围。 { "dependencies": { "your-package": "~1.0.3-beta.1" } } 总结 "your-package": "1.0.3-beta.1" 表示精确的版本号,不会安装或更新到其他版本。 "your-package": "^1.0.3-beta.1" 表示允许安装或更新到主版本号不变的最新版本。 "your-package": "~1.0.3-beta.1" 表示允许安装或更新到次版本号不变的最新版本。 选择哪种格式取决于你对依赖项版本控制的需求。如果你希望确保使用确切的版本,使用精确版本号;如果你希望允许一定范围内的更新,使用 ^ 或 ~ 符号。
-
评论区