npm version 命令详解

基本语法

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]

版本参数说明

  1. 具体版本号

    npm version 1.2.3  # 直接设置为指定版本
  2. 语义化版本更新
  3. major: 主版本号升级 (1.0.0 → 2.0.0)
  4. minor: 次版本号升级 (1.0.0 → 1.1.0)
  5. patch: 修订号升级 (1.0.0 → 1.0.1)
  6. 预发布版本
  7. premajor: 预发布主版本 (1.0.0 → 2.0.0-0)
  8. preminor: 预发布次版本 (1.0.0 → 1.1.0-0)
  9. prepatch: 预发布修订版本 (1.0.0 → 1.0.1-0)
  10. prerelease: 预发布版本号升级 (1.0.0-0 → 1.0.0-1)
  11. 从Git获取
  12. from-git: 从最近的git tag读取版本号

选项参数详解

1. --allow-same-version

npm version 1.0.0 --allow-same-version

允许将版本号设置为与当前版本相同的版本。默认情况下这是不允许的。

2. --no-commit-hooks

npm version patch --no-commit-hooks

跳过 git commit hooks。当你有严格的 commit hooks 检查但想要跳过时使用。

3. --no-git-tag-version

npm version patch --no-git-tag-version

阻止创建 git tag。只更新 package.json 文件。

4. --json

npm version --json

以 JSON 格式输出版本信息。

5. --preid

npm version prerelease --preid alpha

设置预发布标识符。例如:1.0.0-alpha.0

6. --sign-git-tag

npm version patch --sign-git-tag

使用 GPG 签名标签。

7. 工作区相关选项

-w, --workspace
npm version patch -w package-1

在指定的工作区中执行版本更新。

-ws, --workspaces
npm version patch --workspaces

在所有工作区中执行版本更新。

--no-workspaces-update
npm version patch --no-workspaces-update

阻止工作区的依赖版本自动更新。

--include-workspace-root
npm version patch --include-workspace-root

在使用工作区时包含根项目。

实际应用场景

1. 标准版本发布

npm version minor -m "feat: 新增功能 %s"

2. 预发布版本

# 创建 alpha 版本
npm version prerelease --preid alpha

# 创建 beta 版本
npm version prerelease --preid beta

3. Monorepo 工作区管理

# 更新特定包的版本
npm version patch -w package-name

# 更新所有包的版本
npm version patch --workspaces

4. CI/CD 中的使用

# CI 环境中更新版本
npm version patch --no-git-tag-version --no-commit-hooks

注意事项

  1. 执行 version 命令前,确保:

    • git 工作目录是干净的
    • 有足够的权限
    • package.json 文件格式正确
  2. 在团队协作中:

    • 统一版本号升级规范
    • 明确预发布版本的命名规则
    • 做好版本更新的提交信息规范
  3. 在 monorepo 项目中:

    • 注意工作区之间的依赖关系
    • 合理使用工作区相关选项

这些命令和选项的组合使用可以满足各种版本管理场景,建议根据项目实际需求选择合适的命令组合。

本文由mdnice多平台发布


心灵星图
1 声望0 粉丝

你好,我是心灵星图的运营者,很高兴能在这里与你相遇。我热爱探索人类心灵的奥秘,也乐于分享关于科技、心理、哲学的思考。让我们一起在知识的星空中,描绘出属于每个人的心灵地图。