对于每个模块,我有一些文件需要复制到构建目录,并且正在寻找一种方法来最小化重复代码:
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?
由于
答案 0 :(得分:211)
不是答案,但适用于此问题在搜索结果中的显示。
在gulp中复制文件/文件夹
gulp.task('copy', () => gulp
.src('index.js')
.pipe(gulp.dest('dist'))
);
答案 1 :(得分:131)
最好的方法是在采购文件时配置base
,如下所示:
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
.pipe(gulp.dest('./build/public/js/'));
这告诉gulp
使用modules目录作为确定相对路径的起点。
(另外,如果要包含所有JS文件,可以使用/**/*.js
。)
答案 2 :(得分:5)
return gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
为我工作!
答案 3 :(得分:3)
将保留用于保留输入目录树的用途。
.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()
,因为某些插件会压平目录树。
答案 4 :(得分:0)
并行复制文件
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/')),
)
);