Как вручную добавить путь для решения в 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"
}
}