it-swarm.com.ru

Ищете способ скопировать файлы в 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, который уже делает это?

Спасибо

91
chris

Лучший способ - настроить base при поиске файлов, например:

gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
  .pipe(gulp.dest('./build/public/js/'));

Это говорит gulp использовать каталог модулей в качестве отправной точки для определения относительных путей.

(Кроме того, вы можете использовать /**/*.js, если вы хотите включить все файлы JS ...)

131
OverZealous

Не ответ, но применимо к появлению этого вопроса в результатах поиска.

Копировать файлы/папки в gulp

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);
211
Kirk Strobeck
return gulp.src('./client/src/modules/(.*)/index.js')  
  .pipe(gulp.dest('./build/public/js/$1'));

Работал на меня!

5
user2977367

Использование для сохранения входного дерева каталогов будет сохранено. 

.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: для src()}, потому что некоторые плагины сглаживают дерево каталогов.

3
brnmonteiro

копировать файлы параллельно

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/')),
)
);
0
Dan Alboteanu