Поиск способа копирования файлов в gulp и переименование на основе родительского каталога
Для каждого модуля у меня есть некоторые файлы, которые нужно скопировать в каталог сборки, и я ищу способ свести к минимуму повторяющийся код:
gulp.src('./client/src/modules/signup/index.js')
.pipe(gulp.dest('./build/public/js/signup'));
gulp.src('./client/src/modules/admin/index.js')
.pipe(gulp.dest('./build/public/js/admin'));
примерно так:
gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
Очевидно, что это не работает, так есть способ сделать это, или npm, который уже делает это?
Спасибо
Ответы
Ответ 1
Лучше всего настроить ваш base
при поиске файлов, например:
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
.pipe(gulp.dest('./build/public/js/'));
Это говорит gulp
использовать каталог модулей в качестве отправной точки для определения относительных путей.
(Кроме того, вы можете использовать /**/*.js
, если хотите включить все файлы JS...)
Ответ 2
Не ответ, но применимый к этому вопросу в результатах поиска.
Чтобы скопировать файлы/папки в gulp
gulp.task('copy', () => gulp
.src('index.js')
.pipe(gulp.dest('dist'))
);
Ответ 3
return gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
Работал для меня!
Ответ 4
Сохранение дерева каталогов сохранения сохраняется.
.pipe(gulp.dest(function(file) {
var src = path.resolve(SRC_FOLDER);
var final_dist = file.base.replace(src, '');
return DIST_FOLDER + final_dist;
}))
Используя это, вы можете ввести src: .src(SRC_FOLDER + '/**/*.js')
.
Другие ответы не работают для меня (например, используя base:
on src()
}, потому что некоторые плагины сглаживают дерево каталогов.