Задать вопрос
@historydev

Как отключить глобальные объявления?

Проект на js, jsconfig/tsconfig не используются.

Установил vitest, теперь в каждом файле есть объявление node_modules/@vitest/globals.d.ts:
declare global {
  const suite: typeof import('vitest')['suite']
  const test: typeof import('vitest')['test']
  const chai: typeof import("vitest")["chai"]
  const describe: typeof import('vitest')['describe']
  const it: typeof import('vitest')['it']
  const expectTypeOf: typeof import('vitest')['expectTypeOf']
  const assertType: typeof import('vitest')['assertType']
  const expect: typeof import('vitest')['expect']
  const assert: typeof import('vitest')['assert']
  const vitest: typeof import('vitest')['vitest']
  const vi: typeof import('vitest')['vitest']
  const beforeAll: typeof import('vitest')['beforeAll']
  const afterAll: typeof import('vitest')['afterAll']
  const beforeEach: typeof import('vitest')['beforeEach']
  const afterEach: typeof import('vitest')['afterEach']
  const onTestFailed: typeof import('vitest')['onTestFailed']
  const onTestFinished: typeof import('vitest')['onTestFinished']
}
export {}


Например в пустом файле index.js можно вызвать: test();
- ide считает что всё хорошо, при запуске получаем Uncaught ReferenceError: test is not defined
689b434070fc0904639732.png

При этом пока окно подсказок импортов активно, я могу выбрать откуда импортировать, там есть тот самый globals и иное расположение, если выбрать globals - останется поведение выше, если выбрать иное - импортируется как должно быть.

В Languages & Frameworks => JavaScript => Libraries есть предопределённые подключения, среди них есть node_modules, описание того как это работает.
689b425f4f25c885060579.png

Это даёт ему информацию о функция и методах в этих библиотеках, что мы потом и видим в окне подсказок.
- Я отключил node_modules и глобальные объявления исчезли, как и всё остальное из node_modules. Но мне нужно отключить именно vitest/globals или только globals для всего хотя-бы.

Полез на youtrack: 1, 2 - никакого внятного ответа не получил, кроме предложения сменить тип файла с глобальными объявлениями на текст, чтобы исключить из индексации.

Следом я открыл вопрос в vitest репозитории, мне говорят ровно то, что написано в документации globals по умолчанию отключён.

Вопрос, что мне с этим делать?
- Я не хочу для каждой зависимости с глобальными объявлениями файлы трогать, ведь придётся патчить пакет и прочей ерундой заниматься.
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы