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

Yarn Workspace自定义ESLint插件代码更新不生效问题

Yarn Workspace+Turbo Repo下ESLint自定义插件修改后不生效的解决办法

1. 清除ESLint自身缓存

ESLint会缓存检查结果,哪怕插件代码更新,旧缓存可能还在生效。前往业务服务目录(apps/service)执行:

eslint --clear-cache

或者在根目录通过Turbo强制刷新lint缓存:

turbo run lint --force

2. 验证插件加载路径

有时候ESLint没加载工作区的软链插件,反而调用了全局或其他位置的旧版本。在apps/service目录执行以下命令查看实际加载路径:

node -e "console.log(require.resolve('eslint-plugin-custom'))"

确保输出路径指向packages/eslint-plugin-custom下的文件。如果路径错误,检查apps/service/package.json的依赖声明,确认是:

"devDependencies": {
  "eslint-plugin-custom": "workspace:*"
}

3. 重启编辑器ESLint服务

如果在VS Code等编辑器中使用ESLint,编辑器可能缓存了插件实例。按Ctrl+Shift+P打开命令面板,执行ESLint: Restart ESLint Server即可。

4. 调整Turbo缓存监听规则

Turbo可能缓存了lint结果,未监听插件目录的变化。修改根目录turbo.json,给lint任务添加插件目录的监听配置:

{
  "tasks": {
    "lint": {
      "cache": true,
      "inputs": [
        "**/*.js",
        "**/*.ts",
        ".eslintrc.js",
        "../packages/eslint-plugin-custom/**/*"
      ]
    }
  }
}

之后重新运行lint:

turbo run lint --force

5. 核对插件messageId配置

再次确认插件规则中的messageId与messages的key完全匹配,示例如下:

// packages/eslint-plugin-custom/rules/your-rule.js
module.exports = {
  meta: {
    messages: {
      invalidUsage: "正确的错误提示文本"
    }
  },
  create(context) {
    return {
      Identifier(node) {
        if (node.name === 'invalid') {
          context.report({
            node,
            messageId: 'invalidUsage' // 此处必须与messages中的key完全一致
          });
        }
      }
    };
  }
};

6. 重新编译插件(若使用TypeScript)

如果插件基于TypeScript编写,修改代码后需要重新编译。前往插件目录执行:

yarn build

或通过Turbo统一构建:

turbo run build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:45:40