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

Turbo Prune后Lint命令经Sed管道丢失退出码问题求助

解决Turbo Prune后Lint检查退出码被Sed覆盖的问题

问题根源

Shell管道命令默认只会返回最后一个命令的退出码。你用turbo run lint | sed 's/out\///g'时,哪怕turbo run lint因为Lint错误返回退出码1,只要sed执行成功(退出码0),整个命令的最终退出码就会被覆盖为0,导致GitHub Actions误判Lint检查通过。

解决方案

方案1:开启pipefail选项

在执行管道命令前开启set -o pipefail,这个Shell选项会让管道的退出码等于第一个失败命令的退出码,直接解决退出码被覆盖的问题。

具体命令示例:

set -o pipefail && turbo run lint | sed 's/out\///g'

在GitHub Actions的Step中可以这样写:

- name: Run Lint
  run: |
    set -o pipefail
    turbo run lint | sed 's/out\///g'

方案2:手动捕获并返回原退出码

如果不想修改Shell选项,可以拆分步骤,先单独执行Turbo命令并保存退出码,再处理输出,最后返回原退出码:

# 执行Lint并保存输出结果
turbo run lint > lint_output.txt
# 捕获Turbo的原始退出码
TURBO_EXIT_CODE=$?
# 处理输出并打印
sed 's/out\///g' lint_output.txt
# 返回Turbo的退出码,让Actions识别检查结果
exit $TURBO_EXIT_CODE

注意事项

修正你的Sed替换规则:原命令s//out//g是错误的,需根据实际输出路径调整。比如Lint输出路径为out/src/components/Button.js,要替换成src/components/Button.js,就用s/out\///g;如果路径是./out/xxx,则用s/\.\/out\///g。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:02:06