使用Gulp复制文件

19

我有一个应用程序。我的应用程序源代码的结构如下:

./
  gulpfile.js
  src
    img
      bg.png
      logo.png
    data
      list.json
    favicon.ico
    web.config
    index.html
  deploy

我想使用Gulp复制两个文件:./img/bg.png和./data/list.json。我希望将这两个文件复制到部署目录的根目录中。换句话说,任务的结果应该是:

./
  deploy
    imgs
      bg.png
    data
      list.json

我应该如何编写一个Gulp任务来完成这种类型的复制?令我困惑的是,我希望我的任务复制两个单独的文件,而不是符合某种模式的文件。 我知道如果有一个模式,我可以这样做:

var copy = require('gulp-copy');
gulp.task('copy-resources', function() {
  return gulp.src('./src/img/*.png')
    .pipe(gulp.dest('./deploy'))
  ;
});

然而,我仍然不确定如何使用两个分开的文件来完成此操作。

谢谢

2个回答

39

您可以为每个目标目录创建单独的任务,然后使用通用的“复制资源”任务将它们组合在一起。

gulp.task('copy-img', function() {
  return gulp.src('./src/img/*.png')
    .pipe(gulp.dest('./deploy/imgs'));
});

gulp.task('copy-data', function() {
  return gulp.src('./src/data/*.json')
    .pipe(gulp.dest('./deploy/data'));
});

gulp.task('copy-resources', ['copy-img', 'copy-data']);

如果我需要将文件放在两个不同的目录中怎么办?我刚刚更新了我的问题。我犯了一个错误。 - JQuery Mobile

3
您可以使用merge-stream。
安装依赖项:
npm i -D merge-stream

在您的gulp文件中加载依赖项并使用它:
const merge = require("merge-stream");

gulp.task('copy-resources', function() {
  return merge([
      gulp.src('./src/img/*.png').pipe(gulp.dest('./deploy/imgs')),
      gulp.src('./src/data/*.json').pipe(gulp.dest('./deploy/data'))
  ]);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接