Пакет eslint-plugin-import не может распознать разницу между внешними и внутренними каталогами
В моем.eslintrc
У меня есть:
"import/order": [
"error",
{
"alphabetize": {
"caseInsensitive": true,
"order": "asc"
},
"groups": [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index"
],
"newlines-between": "always-and-inside-groups",
"pathGroups": [
{
"pattern": "react",
"group": "external",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"]
}
],
и
"settings": {
"import/resolver": {
"typescript": {
"alwaysTryTypes": true,
"project": "./tsconfig.json"
},
"node": {
"paths": "src"
}
}
}
но в одном из моих файлов у меня есть:
и несколькими строками ниже у меня естьimport { ReservationStatus } from "generated/graphql"
react-to-print
является третьей стороной иgenerated/
это что-то локальное, что я генерирую с помощью Apollo, но оно не внешнее
но я получаю жалобу наimport { useReactToPrint } from "react-to-print"
говоря
react-to-print import should occur after import of generated/graphql eslint[import/order](https://github.com/import-js/eslint-plugin-import/blob/v2.27.5/docs/rules/order.md)
но это неправильно, так что же я неправильно настроил?
1 ответ
Полный ответ из комментария @RenaldoMateus:
Проблема, с которой вы столкнулись, скорее всего, связана с тем, что ESLint неправильно идентифицирует файл как внутренний импорт. По умолчанию ESLint рассматривает весь импорт, который не попадает в категории «встроенный» или «внешний», как «внутренний». Однако похоже, что в вашем случае он не распознаетgenerated/graphql
как внутренний импорт.
Чтобы решить эту проблему, вы можете добавить новую группу путей для вашего каталога вpathGroups
массив в вашем.eslintrc
файл. Это явно укажет ESLint обрабатывать что-либо изgenerated
каталог в качестве внутреннего импорта.
Вот как вы можете это сделать:
"pathGroups": [
{
"pattern": "react",
"group": "external",
"position": "before"
},
{
"pattern": "generated/**",
"group": "internal",
"position": "after"
}
],
В приведенной выше конфигурацииpattern
Свойство представляет собой шаблон glob, который соответствует любому импорту, начинающемуся сgenerated/
. group
Свойство сообщает ESLint рассматривать этот импорт как внутренний импорт. position
Свойство сообщает ESLint разместить этот импорт после внешнего импорта.
После внесения этого изменения ESLint перестанет жаловаться на порядок импорта.