У меня есть проект реактивного монорепозитория с настройкой нескольких псевдонимов (путей машинописного текста), что упрощает импорт файлов без необходимости везде использовать относительные пути.
Например, если у меня есть компонент в src/components/Sidebar/Toggle.jsx, и я хочу импортировать его куда угодно в приложении, я могу просто сделать import {Toggle} from '@company/components/Sidebar/Toggle', и нет необходимости импортировать какой-либо относительный путь, например ../../../Toggle.
Компания — это всего лишь пример псевдонима настройки каталога src в tsconfig.json, например:
"paths": {
"@company/*": ["./src/*"]
},
Это отлично работает в vscode, но в neovim (я использую nvim-lspconfig с eslint) все экспортируемые функции, которые импортируются с использованием псевдонима, имеют предупреждение
Exported declaration not used within other modules
хоть они и есть.
Если я импортирую их, используя относительные пути, это работает без предупреждения.
Есть ли у кого-нибудь предложение, какую конфигурацию мне нужно изменить, чтобы neovim мог видеть, что эти функции на самом деле используются в других файлах?
Я пытался добавить конфигурацию в .eslintrc.json, как это было предложено https://www.npmjs.com/package/eslint-import-resolver-typescript, но это не решило проблему.
settings: {
'import/resolver': {
typescript: {
project: ['packages/*/tsconfig.json'],
},
},
}
Я также должен отметить, что запуск eslint непосредственно в файле с моей текущей конфигурацией работает нормально, без ошибок, так что это как-то связано с плагином neovim.
Проведя еще немного отладки, я вижу, что плагин eslint, похоже, не использует правильный файл конфигурации в качестве корневого. В подпапке есть файл .eslintrc.js, но основной файл .eslintrc.js находится выше в дереве каталогов. Плагин, кажется, находит первый .eslintrc.js и использует его в качестве корневого файла.





Похоже, это связано с плагином eslint в nvim-lsp. Подробнее здесь https://github.com/neovim/nvim-lspconfig/issues/2400