Ищем способ скопировать файлы в 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/'));
очевидно, что выше не работает, так есть ли способ сделать это, или npm, который уже делает это?
спасибо
5 ответов:
лучший способ-настроить ваш
baseпри поиске файлов, вот так:gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'}) .pipe(gulp.dest('./build/public/js/'));Это говорит
gulpиспользовать каталог модулей в качестве отправной точки для определения относительных путей.(кроме того, вы можете использовать
/**/*.jsЕсли вы хотите включить все файлы JS...)
Не ответ, но применимо к появлению этого вопроса в результатах поиска.
для копирования файлов / папок в gulp
gulp.task('copy', () => gulp .src('index.js') .pipe(gulp.dest('dist')) );
return gulp.src('./client/src/modules/(.*)/index.js') .pipe(gulp.dest('./build/public/js/'));работал на меня !
использование для сохранения входного дерева каталогов будет сохранено.
.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:onsrc()}, потому что некоторые плагины сглаживают дерево каталогов.
копировать файлы, параллельно
gulp.task('copy', gulp.parallel( () => gulp.src('*.json').pipe(gulp.dest('build/')), () => gulp.src('*.ico').pipe(gulp.dest('build/')), () => gulp.src('img/**/*').pipe(gulp.dest('build/img/')), ) );
Comments