You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yarn v4中--no-commit-hooks与--no-git-tag-version的替代方案

Yarn v4 替代经典版版本更新CI流程方案

我正从Yarn经典版迁移到v4版本,在版本更新CI任务中遇到问题:现代Yarn版本已移除--no-commit-hooks和--no-git-tag-version参数。

原经典版Yarn的Gitlab CI任务片段

script:
  - ... some preparing scripts
  - git tag -a v$APP_VERSION -m "v$APP_VERSION"
  - yarn version --patch --no-commit-hooks --no-git-tag-version
  - git pull origin $CI_COMMIT_REF_NAME -X theirs --no-commit && git commit -a -m "chore(release): v$APP_VERSION"
  - git push -o ci.skip --tags origin HEAD:$CI_COMMIT_REF_NAME

原流程核心需求

  • 跳过Git钩子(避免Husky等预提交工具引发问题)
  • 使用package.json中现有(更新前)的版本创建标签
  • 修改提交信息为预期格式

Yarn v4 实现方案

Yarn v4的yarn version命令默认仅修改package.json的版本号,不会自动执行Git提交或打标签,因此原流程里的两个废弃参数可以直接去掉。针对跳过Git钩子的需求,改用Git原生的--no-verify参数实现。

调整后的Gitlab CI脚本

script:
  - ... some preparing scripts
  # 基于更新前的版本创建标签(逻辑不变)
  - git tag -a v$APP_VERSION -m "v$APP_VERSION"
  # Yarn v4仅修改版本号,无自动Git操作
  - yarn version --patch
  # 拉取远程代码并提交,用--no-verify跳过Git钩子
  - git pull origin $CI_COMMIT_REF_NAME -X theirs --no-commit && git commit -a -m "chore(release): v$APP_VERSION" --no-verify
  # 推送代码和标签(逻辑不变)
  - git push -o ci.skip --tags origin HEAD:$CI_COMMIT_REF_NAME

关键变化说明

  1. 移除废弃参数:Yarn v4的yarn version --patch不会触发Git提交或打标签,无需再添加--no-commit-hooks和--no-git-tag-version
  2. 跳过Git钩子:在git commit时添加--no-verify参数,直接跳过Husky等预提交钩子的检查
  3. 标签逻辑保留:依然在版本更新前创建标签,确保标签对应更新前的package.json版本

内容的提问来源于stack exchange,提问作者Darko Tasevski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:45:07