Create-react-app 配置自定义eslint

本文介绍了如何在基于create-react-app的项目中配置自定义eslint,通过设置环境变量EXTEND_ESLINT为true,使得项目能使用根目录下的eslint配置,从而满足项目团队的个性化需求。同时提供了在命令行和配置文件中添加环境变量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

  • create-react-app项目构建基于react-scripts包,webpack相关配置也都在这个包里,webpack的配置可以跟随react-scripts包的升级而升级,非常方便。但是在实际项目中我们往往需要自定义一些配置,但又希望保留这种跟着包升级配置的优势。
  • eslint是项目中非常常用的工具,它的配置也是因人而异,因项目团队而异。而create-react-app默认是有一套eslint配置的,并且在webpackeslint-loader配置中设置了useEslintrcfalse。所以直接在项目中添加eslint.rc是没用的。

解决办法

添加node环境变量EXTEND_ESLINTtruereact-scripts包中的webpack配置中有一段代码:

{
   test: /\.(js|mjs|jsx|ts|tsx)$/,
   enforce: 'pre',
   use: [
     {
       options: {
         cache: true,
         formatter: require.resolve('react-dev-utils/eslintFormatter'),
         eslintPath: require.resolve('eslint'),
         resolvePluginsRelativeTo: __dirname,
         // @remove-on-eject-begin
         baseConfig: (() => {
           const eslintCli = new eslint.CLIEngine();
           let eslintConfig;
           try {
             eslintConfig = eslintCli.getConfigForFile(paths.appIndexJs);
           } catch (e) {
             // A config couldn't be found.
           }

           // We allow overriding the config only if the env variable is set
           if (process.env.EXTEND_ESLINT === 'true' && eslintConfig) {
             return eslintConfig;
           } else {
             return {
               extends: [require.resolve('eslint-config-react-app')],
             };
           }
         })(),
         ignore: false,
         useEslintrc: false,
         // @remove-on-eject-end
       },
       loader: require.resolve('eslint-loader'),
     },
   ],
   include: paths.appSrc,
 },

可以看到当EXTEND_ESLINT设置为true的时候会启用根目录下的eslint配置。

添加变量

添加node环境变量这里提供两种方式

命令行

在package.json中修改scripts,这里以start命令为例,由于windows,Linux,Mac环境的不同,命令方式也不同,这里安装cross-env来兼容各个环境。

  • 安装cross-env
npm install --save cross-env
  • 添加环境到命令
"script": {
	"start": "cross-env EXTEND_ESLINT=true react-scripts start"
}
配置文件

添加.env文件,在文件中添加

EXTEND_ESLINT=true

备注

如果你能够放弃跟包升级,你可以使用npm run eject来释放webpack以及其他配置,一切回归你的掌控,那么添加自定义的eslint也自然不在话下,只需要把useEslintrc设置为true就好了。

`create-react-app`是一个脚手架工具,用于快速创建React项目的初始结构。默认情况下,它已经集成了ESLint,这是一个JavaScript代码风格检查器,可以帮助保持代码的一致性和质量。 如果你想要对`create-react-app`项目中的单个文件进行单独的ESLint配置,可以按照以下步骤操作: 1. **创建`.eslintrc`文件**:在你的项目根目录下(通常与`src`同级),创建一个名为`.eslintrc`的配置文件。这个文件可以是JSON格式,也可以是`.js`或`.yaml`格式。 - JSON: ```json { "extends": ["airbnb", "prettier"], // 基于Airbnb规则,并启用Prettier风格 "rules": { /* 这里添加或修改特定文件的规则 */ }, "overrides": [ { "files": ["*.jsx", "*.tsx"], // 匹配特定文件扩展名 "rules": { "import/extensions": ["error", {"js": "never"}] } // 对这些文件应用自定义规则 } ] } ``` - YAML: ```yaml extends: - airbnb - files: ["./*.jsx", "./*.tsx"] rules: import/extensions: ['error', 'never'] ``` 2. **针对特定文件的配置**:在`overrides`部分,通过`files`属性指定需要特殊配置的文件模式。如上例中,`.jsx`和`.tsx`文件将采用不同的`import/extensions`规则。 3. **忽略特定文件或目录**:如果只想让某些文件不受到特定规则的影响,可以在`.eslintrc`或对应的`overrides`块中使用`ignorePatterns`选项,例如: ```json "ignorePatterns": ["node_modules"] ``` 4. **运行ESLint**:安装`eslint-loader`并在webpack配置中启用,或者直接在命令行使用`npm run lint -- filename.js`来检查指定文件。 记得每次修改了配置后,都运行`npm install`来更新依赖并刷新ESLint缓存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值