寻找方法来复制文件,并根据父目录进行重命名

对于每个模块,我都有一些需要复制到构build目录的文件,并且正在寻找一种方法来最小化重复的代码:

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?

谢谢

最好的方法是在采购文件时configuration您的base ,如下所示:

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

这告诉大家使用模块目录作为确定相对path的起点。

(另外,如果你想包含所有的JS文件,你可以使用/**/*.js

不是答案,而是适用于这个问题在search结果中的出现。

在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/$1')); 

为我工作!

用于保存input目录树将被保留。

 .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') . .src(SRC_FOLDER + '/**/*.js')

其他人的答案没有为我工作(如使用base:src() },因为一些插件平坦的目录树。