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
相关产品推荐
相关产品推荐

