Я использую 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);
Есть ли способ получить эту работу, как я описал, без повторного запуска этого пакета для каждого каталога?