Автоматическое подключение модулей в gulp-mocha

Я использую gulp-mocha для тестирования. Мне также нужно задействовать другие библиотеки, вроде chai, во всех тестах. Я мог бы написать что-то вроде этого внутри каждого теста:

const {assert} = require('chai');

Но я бы хотел автоматизировать подключение подобных библиотек, т.к. тот же chai все равно будет использоваться в 99% моих тестов. Т.е. грубо говоря, я не хочу копировать require всех нужных библиотек в каждый файл с тестами. Нужно, чтобы библиотеки (а лучше определенные их части, вроде assert у chai) сразу же были доступны как глобальные переменные.

Я знаю, что у mocha есть такие параметры, как global(s) и require. Однако, судя по данному вопросу, gulp-mocha не поддерживает require, а как работает global, я без понятия. Из оф. документации толком ничего про global не понял.

Мой таск с тестами на данный момент:

const test = () => gulp.src(files.src.js, {read: false})
    .pipe(mocha({
        globals: {chai},
        reporter: 'mocha-multi',
        reporterOptions: {
            spec: '-',
            tap: files.reports.jsTest
        }
    }));

Ответы (1 шт):

Автор решения: Ikor Jefocur

Нашел ответ здесь - https://stackoverflow.com/a/31290131/11195930 .

Gulp-mocha на самом деле поддерживает require, как и любые другие параметры mocha. В свою очередь require должен передавать параметры не через module.exports, а просто в виде глобальных переменных. Причем переменные нужно задавать именно как свойства объекта global. В итоге написал небольшой скрипт, который и передаю в require:

// Вспомогательная функция, позволяет как можно более кратко экспортировать библиотеки
function exportLibs(libs) {
    for (let libName in libs) {
        const lib = require(libName);

        if (libs[libName] === true) {
            global[libName] = lib;
            break;
        }

        for (let name of libs[libName])
            global[name] = lib[name];
    }
}

// Здесь указываются все нужные библиотеки
exportLibs({

    chai: ['assert']

});
→ Ссылка