将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”

Posted

技术标签:

【中文标题】将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”【英文标题】:ESLint couldn't find the config "prettier/@typescript-eslint" after relocating .eslintrc to parent 【发布时间】:2021-04-16 22:07:20 【问题描述】:

我有一个类似的文件夹结构

parentFolder > componentA
             > componentB
             > componentC

每个组件都有一个 package.json,它定义了一个 yarn lint 命令(eslint "myFilter" --no-error-on-unmatched-pattern)。而且每个组件都有自己的 .eslintrc 和 .prettierrc

当我在 componentA/B/C 文件夹中运行 yarn lint 时,它按预期工作。

由于每个组件文件夹中的所有 .eslintrc 都相同,因此我将文件移动到 parentFolder 下并删除了组件文件夹中的副本。当我调用 yarn lint 时,它使用了 parentFolder 中的 .eslintrc,但是,我得到了一个错误。

哎呀!有些不对劲! :(

ESLint:6.8.0。

ESLint 找不到配置“prettier/@typescript-eslint” 从延伸。请检查配置名称是否正确。

我将 .prettierrc 移至父文件夹,但是找不到。我该怎么办?谢谢

更新:我注意到如果我在父文件夹中的 package.json 上添加 prettier 并运行 yarn install,它可以工作。但是,我不知道这是否是正确的方法。

【问题讨论】:

我认为以下是一种解决方法,我在升级 eslint、prettier 并从 js 项目转移到 typescript 项目后遇到了同样的问题。我第一次从 extends 数组中删除 prettier/@typescript-eslint 并再次正常工作。之后,我将prettier/@typescript-elist 添加到extends 数组中,它继续工作没有问题。这种行为很奇怪,不知道为什么第一次就失败了????‍♂️,也不知道为什么没有这个键运行了几次后就可以了。 【参考方案1】:

当我更新到 eslint-config-prettier 8.0.0 时遇到了同样的错误,我通过将 .eslintrc.js 更改为:

    "plugins": ['@typescript-eslint'],
    "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"]

确保您的 package.json 包含:

 @typescript-eslint/eslint-plugin
 @typescript-eslint/parser

你当然可以包含其他插件和其他扩展,你可以找到所有的选项:https://www.npmjs.com/package/@typescript-eslint/eslint-plugin

【讨论】:

【参考方案2】:

prettier/@typescript-eslinteslint-config-prettier v8.0.0 中一直是removed。只需从您的 ESLint 配置文件中删除它即可。 extends 中唯一需要 Prettier 和 ESLint 不冲突的条目是 "prettier"(确保它是 extends 中的最后一个)。

【讨论】:

验证。我也应该删除"plugin:prettier/recommended",对吗?然后,我的 .eslintrc 文件将包含一组规则,如下所示:["plugin:angular/johnpapa", "plugin:@typescript-eslint/recommended", "prettier"](在 prittier 行没有插件前缀)? 不,esling-config-prettier 和 eslint-plugin-prettier 是两个不同的项目。我的回答只针对前者。该插件有自己的推荐配置。请查看其文档。 我必须从所有扩展中删除相同的内容才能使其正常工作。谢谢。【参考方案3】:

prettier/@typescript-eslinteslint-config-prettier v8.0.0 中被删除

见https://github.com/prettier/eslint-config-prettier/issues/173

从 v8 开始,配置更加简单。不幸的是,互联网上仍然有很多 How-Tos 提到了旧的配置文件,这些文件现在都已经消失了。

【讨论】:

【参考方案4】:

只是在包.josn中添加这个包 作为开发者

 "@typescript-eslint/eslint-plugin": "^4.30.0",
    "@typescript-eslint/parser": "^4.30.0",
   "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",

在 eslint.js 中查看此文件添加以尝试检查是否相同

module.exports = 
parser: '@typescript-eslint/parser',
extends: [
    'plugin:react/recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:react-hooks/recommended',
    'plugin:prettier/recommended',  
    'plugin:react-hooks/recommended',
    'eslint:recommended'
        
],
"plugins": ['@typescript-eslint'],

parserOptions: 
    ecmaVersion: 2020,
    sourceType: 'module',
    ecmaFeatures: 
        jsx: true,
    ,
,
rules: 
    'react/react-in-jsx-scope': 'off',

,
settings: 
    react: 
        version: 'detect',
    ,
,

;

【讨论】:

以上是关于将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Razor Pages,在用户从下拉列表中选择父级后,如何将相关数据加载到 div?

更改父级后的Git更新分支

将对象投射到父级

如何通过仅膨胀一次将相同的视图多次添加到父级

将班级名称从子级移动到父级

php 将WordPress附件重定向到父级