如何为Turborepo添加外部ESLint插件?
在Turborepo中添加全局ESLint插件的正确步骤
问题根源
你在根目录安装ESLint插件后,子项目的ESLint实例无法找到这些插件——因为ESLint会优先从当前项目的node_modules查找依赖,而共享的eslint-config-custom包如果没有把插件作为自身依赖,子项目就无法加载到规则定义。
解决步骤
在共享配置包中安装插件
进入你的eslint-config-custom目录,执行安装命令(以npm为例,pnpm/yarn同理):npm install eslint-plugin-import eslint-plugin-unicorn注意:必须把这些插件安装为dependencies(不是devDependencies),这样所有引用该配置包的子项目才能正确获取到插件。
更新共享ESLint配置
修改eslint-config-custom的配置文件(通常是index.js),确保插件和规则正确声明:module.exports = { extends: ["next", "turbo", "prettier"], plugins: ["import", "unicorn"], rules: { "@next/next/no-html-link-for-pages": "off", "import/no-unused-modules": "warn", // 可添加unicorn插件的规则示例 "unicorn/prefer-array-find": "error", "unicorn/no-null": "warn" }, };确保子项目正确引用共享配置
检查每个应用/包的.eslintrc.js,确认已继承自定义配置:module.exports = { extends: ["custom"], // 对应eslint-config-custom包的name字段 };若你的共享配置包
package.json里的name是eslint-config-custom,也可以写成extends: ["eslint-config-custom"]。重新安装依赖并清理缓存
回到monorepo根目录,重新安装所有依赖:npm install清理ESLint缓存避免旧配置残留:
npx eslint --clear-cache验证配置生效
在任意子项目中运行ESLint检查,确认错误消失:npx eslint .
额外注意事项
- 不要仅在根目录安装ESLint插件,子项目的ESLint实例无法跨项目读取根目录的
node_modules依赖。 - 若使用pnpm,确保没有特殊的hoisting配置导致插件无法被共享配置包访问,默认hoisting模式即可正常工作。
- 检查
eslint-config-custom的package.json,确保其已被所有子项目作为devDependencies引入。
内容的提问来源于stack exchange,提问作者JDD
相关产品推荐
相关产品推荐

