В Karma glob-паттерны используются для указания файлов, которые будут включены в тестирование или наблюдаться за изменениями. Правильное понимание их синтаксиса критично для точной настройки тестового окружения и избежания лишнего подключения файлов.
1. Звёздочка * Звёздочка заменяет
любое количество символов в имени файла или папки,
кроме разделителя пути /.
Примеры:
*.js — все файлы с расширением .js в
текущей директории.app/*.spec.js — все тестовые файлы с расширением
.spec.js в папке app.2. Двойная звёздочка ** Двойная
звёздочка обозначает любое количество вложенных
директорий. Это особенно полезно для глубоких структур
проектов.
Примеры:
app/**/*.js — все .js файлы во всех
подпапках app, на любом уровне вложенности.**/*.spec.js — все файлы с расширением
.spec.js по всему проекту.3. Символ вопроса ? Знак вопроса
соответствует одному любому символу в имени файла или
папки.
Пример:
file?.js — подходит file1.js,
fileA.js, но не file12.js.4. Квадратные скобки [] Квадратные
скобки задают множество допустимых символов на одной
позиции.
Примеры:
file[0-9].js — file0.js,
file1.js, …, file9.js.file[abc].js — filea.js,
fileb.js, filec.js.5. Фигурные скобки {} Фигурные скобки
позволяют указать несколько вариантов в одной
позиции.
Примеры:
file.{js,ts} — файлы file.js или
file.ts.app/{core,utils}/*.js — все .js файлы в
папках core и utils внутри
app.files
и exclude в KarmaKarma использует glob-паттерны в конфигурации через массивы
files и exclude.
module.exports = function(config) {
config.set({
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
exclude: [
'src/legacy/**/*.js'
]
});
};
Пояснения:
files — файлы, которые будут загружены в тестовое
окружение.exclude — файлы, исключённые из загрузки, даже если они
подходят под шаблон в files.files.Для тестов лучше использовать **/*.spec.js вместо
точного указания папок — это упрощает добавление новых файлов без
изменения конфигурации.
Для больших проектов исключение устаревших или экспериментальных
модулей через exclude уменьшает время запуска
тестов.
Комбинация фигурных и двойных звёздочек позволяет строить гибкие фильтры:
'src/{core,components}/**/*.js'
Здесь будут подключены все JS-файлы в папках core и
components, включая их подпапки.
Скрытые файлы: файлы, начинающиеся с точки
., не включаются стандартными паттернами. Чтобы их
учитывать, требуется явно указать:
'src/**/.*.js'Совмещение с плагинами Karma: некоторые плагины
(например, karma-webpack) могут интерпретировать
glob-паттерны по-своему, но базовый синтаксис остаётся тем же.
Escaping символов: если имя файла содержит
специальные символы ([, ], {,
}), их необходимо экранировать обратным слэшем:
'src/array\\[test\\].js'Использование glob-паттернов в Karma позволяет точно настраивать загрузку файлов для тестов, обеспечивая гибкость и масштабируемость. Понимание всех символов и их сочетаний делает конфигурацию максимально эффективной и предотвращает случайное подключение лишних файлов или пропуск важных тестов.