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

如何在Turbo Monorepo中配置lint-staged执行子包本地lint脚本?

解决Turbo Monorepo中lint-staged执行子包本地脚本的问题

可行,你遇到的问题是因为pnpm默认从Monorepo根目录查找脚本,不会自动切换到文件所在的子包目录执行。以下是具体解决方案:

核心方案:指定pnpm执行目录

在Monorepo根目录创建或修改.lintstagedrc.json,通过--cwd参数让pnpm切换到暂存文件所在的子包目录,执行本地的lint脚本:

{
  "apps/**/*.{ts,tsx}": (filenames) => {
    // 提取每个文件所属的子包目录(如apps/app-a)
    const uniquePkgDirs = [...new Set(filenames.map(file => file.split('/').slice(0, 2).join('/')))];
    return uniquePkgDirs.map(dir => `pnpm --cwd ${dir} run lint && pnpm --cwd ${dir} run check-types`);
  },
  "packages/**/*.{ts,tsx}": (filenames) => {
    const uniquePkgDirs = [...new Set(filenames.map(file => file.split('/').slice(0, 2).join('/')))];
    return uniquePkgDirs.map(dir => `pnpm --cwd ${dir} run lint && pnpm --cwd ${dir} run check-types`);
  }
}

说明:

  • 这段配置会自动识别暂存文件所属的子包目录,通过new Set去重避免重复执行同一子包的脚本
  • 确保每个子包的package.json中已定义lint和check-types脚本
  • 无需在子包目录单独配置lintstagedrc.json,根目录的统一配置即可覆盖需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:00:03