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
关键变化说明
- 移除废弃参数:Yarn v4的
yarn version --patch不会触发Git提交或打标签,无需再添加--no-commit-hooks和--no-git-tag-version - 跳过Git钩子:在
git commit时添加--no-verify参数,直接跳过Husky等预提交钩子的检查 - 标签逻辑保留:依然在版本更新前创建标签,确保标签对应更新前的package.json版本
内容的提问来源于stack exchange,提问作者Darko Tasevski
相关产品推荐
相关产品推荐

