[英]Shared eslint config cannot find node modules
我有多个应用程序想要共享相同的 eslint 配置:
- project_root/
- app1/
- node_modules/
- eslint.rc
- app2/
- node_modules/
- eslint.rc
- app3/
- node_modules/
- eslint.rc
- eslint.rc
每个应用程序都有相同的配置:
module.exports = {
extends: [
'../.eslintrc',
],
};
在根目录中,我想配置所有内容:
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
'prettier/@typescript-eslint',
],
root: true,
env: {
node: true,
jest: true,
},
rules: {},
};
但是现在每个应用程序都会抛出无法找到节点模块的错误:
无法加载在“.eslintrc.js»../.eslintrc”中声明的解析器“@typescript-eslint/parser”:找不到模块“@typescript-eslint/parser”。
我在根目录中没有任何 node_modules,我想避免它。
我最终联系了 ESLint discord 帮助,并在那里找到了一些帮助我设置共享配置的资源。
https://github.com/eslint/eslint/issues/3458
当我使用 RushJS 来管理我的 monorepo 时,我正在使用 ESLint 的补丁来允许共享配置的 npm 包在本地加载插件。 更多信息在这里: https : //www.npmjs.com/package/@rushstack/eslint-patch 。
简而言之,在您的 monorepo 中创建一个 NPM 包 - 如果您在本地链接,则不必将其上传到 NPM(RushJS 会这样做,但我认为您也可以使用普通的 NPM 来做到这一点)。 将您的配置放在该包中 - 信息在这里: https : //eslint.org/docs/user-guide/configuring/configuration-files#using-a-shareable-configuration-package添加从您的共享配置引用的任何插件作为依赖项那个包裹。 使用上面引用的 eslint-patch,ESLint 将从这个包中加载插件,而不是你必须在每个项目中安装它们。
这对我有用。 我希望它可以帮助其他人...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.