共享 eslint 配置找不到节点模块
Posted
技术标签:
【中文标题】共享 eslint 配置找不到节点模块【英文标题】:Shared eslint config cannot find node modules 【发布时间】:2020-07-01 17:41:58 【问题描述】:我有多个应用想要共享相同的 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: ,
;
但是现在每个应用程序都会抛出找不到节点模块的错误:
未能加载在中声明的解析器“@typescript-eslint/parser” '.eslintrc.js » ../.eslintrc':找不到模块 '@typescript-eslint/parser'`。
我在根目录中没有任何 node_modules,我想避免它。
【问题讨论】:
您需要明确提及您的 node_modules 文件夹的路径。任何一个都可以工作../node_modules/@typescript-eslint/parser
/node_modules/@typescript-eslint/parser
/node_modules/@typescript-eslint/parser
node_modules/@typescript-eslint/parser
对于其他节点模块依赖项。
【参考方案1】:
我最终联系了 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 将从这个包中加载插件,而不是你必须在每个项目中安装它们。
这对我有用。我希望它可以帮助其他人......
【讨论】:
以上是关于共享 eslint 配置找不到节点模块的主要内容,如果未能解决你的问题,请参考以下文章
eslint“找不到模块'eslint/lib/util/source-code'”错误
无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'
Atom & eslint:找不到模块 'eslint-config-react-app'
Javascript Eslint 错误:找不到模块 'optionator'