如何使用EXTEND_ESLINT环境变量扩展CRA ESLint规则
Facebook的Create Reaction App(CRA)最近发布了一项新功能,允许您扩展其基本ESLint规则。
我们认识到,在某些情况下,需要进一步定制。它 属性来扩展基本ESLint配置 将_ESLINT环境变量扩展为True。 Setting Up Your Editor
以下是给出的示例,但没有详细说明,如文件名或"共享配置"是什么。
{
"eslintConfig": {
"extends": ["react-app", "shared-config"],
"rules": {
"additional-rule": "warn"
},
"overrides": [
{
"files": ["**/*.ts?(x)"],
"rules": {
"additional-typescript-only-rule": "warn"
}
}
]
}
}
通过添加环境变量启用该功能。
EXTEND_ESLINT=true
但在文档页面上也没有提供任何如何使用它的信息-Advanced configuation
我已在名为.eslintrc.json
的文件中将它们的示例代码添加到我的构建中,但我收到一个构建错误:
"错误:.eslintrc.json中的ESLint配置无效:-意外的顶级属性"eslintConfig"。"
有人把它修好了吗?该文件是否需要导出模块?
虽然Create-React-App documentation不清楚,但他们给出的示例就好像项目的推荐答案配置位于package.json
文件的eslintConfig
属性中。
.eslintrc.json
方式,则它必须是有效的ESLint配置文件,该文件没有eslintConfig
属性。
该示例中唯一重要的事情是:
- 它们在任何其他配置之前从
"react-app"
扩展 - 任何附加规则都设置为
"warn"
,以避免停止生成项目 - 如果使用TypeScrip,请将特定的TS相关配置放在
"overrides"
部分中。
使用TypeScrip的CRA项目的简单.eslintrc.js
(请注意扩展名)配置文件可能如下所示:
const defaultRules = [
'react-app',
'eslint:recommended',
// any other plugins or custom configuration you'd like to extend from.
];
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2017,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
env: {
browser: true,
node: true,
es6: true,
jest: true,
},
extends: defaultRules,
rules: {
'array-callback-return': 'warn',
'consistent-return': 'warn',
'default-case': 'warn',
// etc.
},
overrides: [
{
files: ['**/*.ts', '**/*.tsx'],
plugins: ['@typescript-eslint'],
extends: [
...defaultRules,
'plugin:@typescript-eslint/recommended',
// any other TypeScript specific config (from a plugin, or custom)
],
rules: {
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unused-expressions': 'warn',
// etc.
},
},
],
settings: {
react: {
// React version. "detect" automatically picks the version you have installed.
version: 'detect',
},
},
};
相关文章