91

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

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 呢?

谢谢

4

5 回答 5

210

不是答案,但适用于该问题在搜索结果中的出现。

在 gulp 中复制文件/文件夹

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);
于 2014-03-02T21:43:33.953 回答
131

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

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

这告诉gulp使用模块目录作为确定相对路径的起点。

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

于 2014-01-21T04:35:13.083 回答
5
return gulp.src('./client/src/modules/(.*)/index.js')  
  .pipe(gulp.dest('./build/public/js/$1'));

为我工作!

于 2014-01-20T12:35:54.483 回答
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:on src()},因为某些插件会使目录树变平。

于 2015-11-16T17:54:53.340 回答
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/')),
)
);
于 2018-04-02T15:36:47.727 回答