对于每个模块我有一个需要被复制到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'));
显然,上述不工作,那么,有没有办法做到这一点,或者说已经这样做了的故宫?
谢谢
最好的办法是配置你的base
采购文件时,就像这样:
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
.pipe(gulp.dest('./build/public/js/'));
这告诉gulp
使用目录模块作为起始点,用于确定相对路径。
(此外,您还可以使用/**/*.js
如果您要包括所有的JS文件...)
不是答案,而是适用于在搜索结果中这一问题的外观。
要复制文件/文件夹一饮而尽
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'));
为我工作!
使用了保留输入目录树将被保留。
.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()
},因为一些插件扁平化目录树。
并行复制文件
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/')),
)
);