npm version 命令及其用法:
1. 基本语法:
# 基本格式
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
# 例如
npm version 1.2.3 # 设置特定版本
npm version patch # 增加修订号
2. 版本号类型(遵循 Semver 规范):
major: 1.0.0 -> 2.0.0 # 主版本号,不兼容的API修改
minor: 1.0.0 -> 1.1.0 # 次版本号,向下兼容的功能性新增
patch: 1.0.0 -> 1.0.1 # 修订号,向下兼容的问题修正
# 预发布版本
premajor: 1.0.0 -> 2.0.0-0
preminor: 1.0.0 -> 1.1.0-0
prepatch: 1.0.0 -> 1.0.1-0
prerelease: 1.0.0-0 -> 1.0.0-1
# 从 git 标签同步版本
from-git # 使用最近的 git 标签作为版本号
3. 常用参数:
# 不自动提交 git
npm version patch --no-git-tag-version
# 不自动生成 git tag
npm version minor --no-tag
# 允许工作目录有改动
npm version patch --force
# 指定提交信息
npm version patch -m "Upgrade to %s for reasons"
# 指定标签前缀
npm version patch --tag-version-prefix="v"
# 运行指定的生命周期脚本
npm version patch --hook-script="build"
4. 版本号格式示例:
1.0.0 # 正式版本
1.0.0-alpha.1 # alpha 预发布版本
1.0.0-beta.2 # beta 预发布版本
1.0.0-rc.1 # release candidate 版本
5. 在 package.json 中的相关配置:
{
"version": "1.0.0",
"scripts": {
"version": "echo '版本更新前运行'",
"postversion": "echo '版本更新后运行'"
},
"config": {
"tag-version-prefix": "v",
}
}
6. 实际使用场景示例:
# 开发新功能时
npm version minor # 1.0.0 -> 1.1.0
# 修复 bug 时
npm version patch # 1.1.0 -> 1.1.1
# 大版本更新时
npm version major # 1.1.1 -> 2.0.0
# 发布测试版本时
npm version prerelease --preid=beta # 1.0.0 -> 1.0.1-beta.0
# 完整的发布流程示例
npm version patch -m "fix: 修复了某个bug" && git push && git push --tags
7. 版本管理最佳实践:
# 1. 检查当前版本
npm version --no-git-tag-version
# 2. 在功能分支上开发
git checkout -b feature/new-feature
# 3. 完成开发后合并到主分支
git checkout main
git merge feature/new-feature
# 4. 更新版本号并创建标签
npm version minor -m "feat: 添加新功能"
# 5. 推送到远程仓库
git push && git push --tags
8. 搭配 conventional-commits 使用:
# 安装工具
npm install -g conventional-changelog-cli
# 自动判断版本类型
npx standard-version
# 生成 CHANGELOG
conventional-changelog -p angular -i CHANGELOG.md -s
9. 一些注意事项:
- 版本号更新会同时修改 package.json 和 package-lock.json
- 默认会创建一个 git commit 和 tag
- 如果工作目录有未提交的更改,需要先提交或使用 --force
- 建议在主分支上执行版本更新操作
- 建议遵循语义化版本规范
10. 高级用法:
# 自定义版本更新脚本
"scripts": {
"version": "npm run build && git add -A dist",
"postversion": "git push && git push --tags && npm publish"
}
# 配合 husky 使用
{
"husky": {
"hooks": {
"pre-version": "npm test",
"post-version": "git push && git push --tags"
}
}
}
这些命令和实践可以帮助你更好地管理项目版本,建议根据项目具体需求选择合适的版本更新策略。记住,好的版本管理可以帮助团队更好地协作和追踪项目变更。