npm version 介绍

109 阅读2分钟

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"
    }
  }
}

这些命令和实践可以帮助你更好地管理项目版本,建议根据项目具体需求选择合适的版本更新策略。记住,好的版本管理可以帮助团队更好地协作和追踪项目变更。