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

如何让Turborepo在所有应用文件夹中执行deploy命令

Turborepo CI环境下deploy命令漏识别工作区问题解决

问题复现条件

  • 技术栈版本:turbo@1.3.1、pnpm@7.4.1
  • 目录结构:/apps 目录下存在2个嵌套应用,两个应用的package.json均已配置deploy命令
  • 表现差异:
    • 本地Windows 10环境执行根目录pnpm run deploy,可正常触发两个应用的deploy流程
    • GitHub Action Ubuntu最新环境执行同命令,仅识别到1个工作区的deploy任务;同环境下build命令可正常识别两个工作区执行

现有配置

根目录package.json脚本配置:

"deploy": "turbo run deploy --parallel"

根目录turbo.json pipeline配置:

{
    "pipeline": {
        "build": {
            "dependsOn": ["^build"],
            "outputs": ["dist/**"]
        },
        "deploy": {
            "cache": false
        },
        "lint": {
            "outputs": []
        },
        "dev": {
            "cache": false
        }
    }
}

排查&解决步骤

  1. 优先排查跨平台大小写兼容问题
    Windows文件系统/脚本匹配默认大小写不敏感,Linux环境为严格大小写匹配。由于build命令可正常识别两个工作区,说明pnpm工作区注册无异常,大概率是其中一个应用的package.json里deploy脚本名存在大小写偏差、前后带多余空格、拼写错误,导致Linux环境下Turborepo匹配不到对应脚本,本地Windows环境可正常容错识别。修正脚本名保证两个应用的脚本键名完全为小写deploy、无多余字符即可。
  2. 强制指定执行范围兜底
    如果确认脚本名完全无问题,修改根目录deploy命令,增加--force和明确的filter参数,强制扫描apps下所有应用执行:
"deploy": "turbo run deploy --parallel --force --filter='./apps/*'"

参数说明:

  • --force:忽略Turbo的变更检测、缓存逻辑,强制触发所有匹配任务
  • --filter='./apps/*':明确指定任务执行范围为/apps目录下所有工作区,跳过Turbo的自动识别逻辑,从根源避免漏扫

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:18:16