Как вручную добавить путь для решения в eslintrc

У меня есть папка в моем проекте main, которую я решаю как модуль. Например import x from 'main/src' импортирует main/src/index.js. Это делается с помощью конфигурации алиасов с настройкой webpack.

Проблема, с которой я сталкиваюсь, - избавиться от ошибок через eslint. Я знаю, что eslint предоставляет плагин для решения webpack, однако у меня возникли проблемы с его работой. Я подозреваю, что это потому, что я нахожусь в webpack 2 и использую es6 в своих конфигурационных файлах для webpack.

Есть ли способ вручную написать параметр разрешения, который исправляет эту проблему для моего eslint?


Единственный другой хак, который я видел в работе, - это использование import/core-modules, но затем я должен перечислить каждую папку в дереве подкаталогов main/src/bar, main/src/foo. Это не было бы идеальным.

Ответ 1

Я думаю, что эта ссылка ниже поможет вам. Вы можете добавить разрешающие каталоги с помощью config.

https://github.com/benmosher/eslint-plugin-import#resolvers

Например, если вы хотите разрешить src/, вы можете написать, как показано ниже, на .eslintrc.

{
  "settings": {
    "import/resolver": {
      "node": {
        "paths": ["src"]
      }
    }
  }
}

Затем ESLint решит из каталога src. Вы можете потребовать src/hoge/moge.js, написав const moge = require('hoge/moge');, и ESLint знает это.

Ответ 2

Слишком поздно, чтобы увидеть этот вопрос. На самом деле, уже есть распознаватель с именем eslint-import-resolver-alias, который реализует эту функциональность с настройкой ниже.

{
  settings: {
    'import/resolver': {
      'alias': [
        ['main/src', './main/src']
       ]
     }
  }
}

Ответ 3

Я столкнулся с подобной проблемой: ESLint не смог разрешить импортированные модули относительно инструкции "baseUrl": "src" в моем tsconfig.json.

Удалось решить проблему по аналогии с помеченным как решение ответом, за исключением того, что пришлось добавить массив расширений. Поэтому я добавил в свой .eslintrc.js следующее:

  settings: {
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
        paths: ['./src']
      }
    }
  },

Надеюсь, это кому-нибудь поможет. Источником моего решения на самом деле является страница пакета npm.

Ответ 4

У меня была такая же проблема с веб-пакетом. Я установил eslint-import-resolver-webpack и обновил .eslintrc таким образом

{
    "settings": {
        "import/resolver": "webpack"
    }
}