如何让 eslint 导入/首先了解我的 webpack 别名?

Posted

技术标签:

【中文标题】如何让 eslint 导入/首先了解我的 webpack 别名?【英文标题】:How to make eslint import/first understand my webpack aliases? 【发布时间】:2020-02-19 03:02:10 【问题描述】:

我正在使用eslint-import-resolver-webpack 让我的 eslint 知道我的 webpack 别名。

但是我还有一个问题: eslint 正在报道:Absolute imports should come before relative imports. eslint(import/first)

如何让 eslint 理解我的别名导入是相对导入而不是绝对导入?


以下是有关我的设置的更多信息:

| source
 - | app
    - | containers
       - | CalendarContainer.js
| .eslintrc
| webpack.config.dev.js
| webpack.config.resolve.js

webpack.config.dev.js

const resolveConfig = require('./webpack.config.resolve')
const appConfig = 
  // lots of config,
  ...resolveConfig // to have the resolve key with aliases underneath

module.exports = [appConfig, ...]

webpack.config.resolve.js

const path = require('path');

module.exports = 
    resolve: 
        extensions: ['.js'],
        modules: ['node_modules'],
        alias: 
            '~containers': path.resolve(__dirname, 'source/app/containers'),
            // ...
        ,
    ,
;

.eslintrc

  
  // ...
  "settings": 
    "import/resolver": 
      "webpack": 
        "config": "webpack.config.resolve.js"
      
    
  ,
  // ...

CalendarContainer.js

import React,  useEffect, useState  from 'react';

import Button from '../Components/Button';
import SearchModalContainer from '~containers/SearchModalContainer';

这一切正常,除了以下行:import SearchModalContainer from '~containers/SearchModalContainer';

确实,eslint 还是会报错:Absolute imports should come before relative imports.eslint(import/first)

如何让 eslint 明白这个导入是相对导入而不是绝对导入?

(我不想在 eslint 配置中禁用此规则)

【问题讨论】:

【参考方案1】:

使用 eslint-import-resolver-alias

只需将eslint-import-resolver-webpack 替换为eslint-import-resolver-alias 即可轻松为eslint 配置别名。

【讨论】:

以上是关于如何让 eslint 导入/首先了解我的 webpack 别名?的主要内容,如果未能解决你的问题,请参考以下文章

Typescript、Airbnb 和 eslint 导入/无外部依赖项(带别名)

ESLint 按包名排序导入

如何让Ubuntu系统支持WebP图片格式

webpack中的eslint导入:无法解析模块的路径

如何使用 Eslint 在 Gatsby 中使用绝对导入?

禁用未找到 eslint 规则的警告消息