Browserify и gulp воссоздают исходную структуру - PullRequest
0 голосов
/ 09 июля 2019

Я использую gulp и browserify для создания исходных кодов es6 javascript. Теперь мне нужно для результатов создать почти точно такую ​​же структуру, как в исходных файлах.

Пример источника:

. sources
.. js
... test
.... index.js
.... test.js
... catalog
.... index.js
.... other.js

Пример назначения:

.. dist
... test
.... main.js
... catalog
.... main.js

Таким образом, файлы index.js и test.js из test dir собираются в main.js в dist / test. И index.js и другие.js из каталога собираются в dist / catalog.

Конечно, это только пример, и структура каталогов немного отличается и может иметь больше каталогов и файлов.

Вот часть моего файла gulpfile (конечно, есть необходимый импорт):

let files = glob.sync('./sources/**/index.js');

let brf = watchify(browserify(files, {debug: true, cache: {}, packageCache: {}}));
brf.transform('babelify', {presets: ['@babel/preset-env', '@babel/preset-react'], sourceMaps: true});

let develop = () => {
    gulplog.info('Updating files ... ');

    let start = new Date();
    return brf.bundle((err, buff) => {
        if(err) gulplog.error('Error: ' + err );
    })
        .pipe(source(  'main.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./dist/'))
        .on('end', () => {
            let end = new Date();
            let time = (end.getTime() - start.getTime()) / 1000 ;
            let s = 's';
            if(time < 1) {
                time = time * 1000;
                s = 'ms';
            }
            gulplog.info('Finished after '+ time + ' ' + s)
        });
};

brf.on('update', develop);

Есть ли способ получить эту работу, как я описал, без повторного запуска этого пакета для каждого каталога?

...