Я думаю, вы хотите что-то вроде следующего.Я упростил несколько вещей, чтобы я мог проверить это.
Первый пункт: ваша getFolders()
функция может быть легко заменена на glob.sync()
see call glob options .Поскольку вам, очевидно, нужны только папки, ваш шаблон glob для вызова glob ДОЛЖЕН заканчиваться на "/
", то есть path.sep
.
Ключевым моментом для возврата потока является использование gulp-merge , который позволяет вам возвращать объединенный поток каждой из папок. Map отдельные потоки.
const gulp = require('gulp');
const path = require('path');
const merge = require('gulp-merge');
const gulpif = require('gulp-if');
const glob = require("glob");
const inject = require('gulp-inject-string');
function injectAfterEach(src) {
const folders = glob.sync(src);
console.log(folders);
return merge(folders.map(function (folder) {
console.log("folder basename = " + path.basename(folder));
if (path.basename(folder) !== 'base') {
let fullPath = path.join("RemotePath", path.sep, path.basename(folder), path.sep);
console.log('fullPath: ' + fullPath);
return gulp.src(path.join(folder, '*.html') )
.pipe(inject.afterEach('<script src="', fullPath))
.pipe(gulp.dest('dist'))
}
}));
}
gulp.task('default', function() {
return gulp.src('./htmlFolder')
.pipe(gulpif(true, injectAfterEach('./htmlFolders/**/')))
// just commented out for testing
// .pipe(gulpif(process.env.NODE_ENV == 'production', removeCode({ production: true })))
// .pipe(gulpif(process.env.NODE_ENV == 'production', htmlmin(config.tasks.html.htmlmin)))
.pipe(gulp.dest('dist'))
// .pipe(browserSync.stream());
});