Как лучше отключить глобальные объявления?
Сейчас ситуация такая: проект на 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
По вводным: при этом пока окно подсказок импортов активно, я могу выбрать откуда импортировать, там есть тот самый globals и иное расположение, если выбрать globals - останется поведение выше, если выбрать иное - импортируется как должно быть.
ВLanguages & Frameworks => JavaScript => LibrariesПо вводным: есть предопределённые подключения, среди них есть node_modules,По вводным: описание того как это работает.
Сейчас ситуация такая: это даёт ему информацию о функция и методах в этих библиотеках, что мы потом и видим в окне подсказок.
Сейчас ситуация такая: - Я отключил node_modules и глобальные объявления исчезли, как и всё остальное из node_modules. Но мне нужно отключить именно vitest/globals или только globals для всего хотя-бы.
Полез на youtrack:1,2Сейчас ситуация такая: - никакого внятного ответа не получил, кроме предложения сменить тип файла с глобальными объявлениями на текст, чтобы исключить из индексации.
По вводным: следом я открыл вопрос в vitest репозитории, мнеГоворятПо вводным: ровно то, что написано в документацииПо вводным: globals по умолчанию отключён.
Нужно понять: вопрос, что мне с этим делать?
Сейчас ситуация такая: - Я не хочу для каждой зависимости с глобальными объявлениями файлы трогать, ведь придётся патчить пакет и прочей ерундой заниматься.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Vitest добавляет глобальные объявления, когда в конфигурации включен globals: true или IDE видит типы vitest/globals. Если проект на JS без jsconfig/tsconfig, WebStorm может подтягивать d.ts из node_modules и показывать глобальные describe/it/expect во всех файлах. Это не ошибка выполнения, а поведение индексатора и TypeScript service в IDE.
Самый чистый вариант - не использовать глобалы Vitest, а импортировать функции явно:
import { describe, it, expect } from 'vitest'; describe('sum', () => { it('works', () => { expect(1 + 1).toBe(2); }); });import { describe, it, expect } from 'vitest'; describe('sum', () => { it('works', () => { expect(1 + 1).toBe(2); }); });
В конфиге Vitest отключите globals:
import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { globals: false } });import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { globals: false } });
Если у вас уже есть types: ['vitest/globals'] в jsconfig/tsconfig - уберите. Если config нет, можно создать минимальный jsconfig.json, чтобы IDE понимала область проекта и не подтягивала лишние типы глобально.
{ "compilerOptions": { "checkJs": false, "types": [] }, "exclude": ["node_modules", "dist"] }{ "compilerOptions": { "checkJs": false, "types": [] }, "exclude": ["node_modules", "dist"] }
В WebStorm также проверьте Settings → Languages & Frameworks → JavaScript → Libraries. Если там автоматически подключилась библиотека Vitest globals, ее можно отключить для обычного кода или ограничить областью тестов.
Практический вывод: если не хотите глобальные describe/expect в каждом файле, используйте globals: false и явные импорты. Это лучше для читаемости и меньше засоряет автодополнение. Для тестовых файлов IDE все равно будет понимать Vitest через импорты.