【问题标题】:can't copy deep folder structure with gulp无法使用 gulp 复制深层文件夹结构
【发布时间】:2015-10-23 16:15:53
【问题描述】:

我得到了最奇怪的行为。

我有一个 gulp 文件,它包含三个任务。清理,将一堆东西复制到一个文件夹,将整个文件夹复制到其他目的地。

它似乎复制了整个文件夹的大部分内容,但将某些文件夹留空。没有押韵或原因,它们都是包含 javascript 文件和文件夹的文件夹。没有意义。

这就是我得到的。

gulp.task('clean', function(cb) {
    del([config.get("deploy.output.deploy"), config.get("deploy.buildDirectory")],{force:true}, cb);
});

gulp.task("copy-source",["clean"], function () {
    gulp.src("src/**")
        .pipe(gulp.dest(config.get("deploy.output.app")+"/src"));
    gulp.src(["package.json", "server.js", "bootstrap.js"])
        .pipe(gulp.dest(config.get("deploy.output.app")));
    gulp.src("config/**")
        .pipe(gulp.dest(config.get("deploy.output.app")+"/config"));
    return gulp.src("deploy/*")
        .pipe(gulp.dest(config.get("deploy.output.deploy")));
});

gulp.task("copy-to-buildDir",["copy-source"], function () {
    return gulp.src(config.get("deploy.output.deploy")+"/**")
        .pipe(gulp.dest(config.get("deploy.buildDirectory")));
});

gulp.task("deploy",[ "copy-to-buildDir"]);

src文件夹结构长这样,或多或少明显是psudo结构

output
└── app
    ├── config
    │   └── file7.js
    ├── src
    │   ├── modules
    │   │   ├── ges
    │   │   │   ├── file1.js
    │   │   │   └── file2.js
    │   │   └── file3.js
    │   ├── file4.js
    │   └── controllers
    │       └── file5.js
    └── file6.js

dest 文件夹结构如下所示

output
└── app
    ├── src
    │   ├── modules
    │   │   └── EMPTY
    │   └── controllers
    │       └── file5.js
    └── file6.js

所以模块和控制器是姐妹,一个有一个没有文件。没有意义。

如果您有任何想法,我将不胜感激。

src(第一个任务)的构建也每次都有效。还 我已经尝试了几乎所有可能的依赖关系排列,例如[“干净”]

【问题讨论】:

  • 你在同一个任务中有多个 gulp.src 并且只有最后一个在返回..所以基本上它可能在其他 gulp.src 完成复制之前完成...尝试合并源并拥有单个gulp.src
  • 有趣。当你把它拼出来时,听起来有点明显。谢谢,今天晚些时候试试。
  • @entre 这似乎可以解决问题。您能否用该信息为后代做出实际答案,以便我将其选为正确?

标签: node.js stream gulp


【解决方案1】:

以下任务定义不正确

gulp.task("copy-source",["clean"], function () {
    gulp.src("src/**")
        .pipe(gulp.dest(config.get("deploy.output.app")+"/src"));
    gulp.src(["package.json", "server.js", "bootstrap.js"])
        .pipe(gulp.dest(config.get("deploy.output.app")));
    gulp.src("config/**")
        .pipe(gulp.dest(config.get("deploy.output.app")+"/config"));
    return gulp.src("deploy/*")
        .pipe(gulp.dest(config.get("deploy.output.deploy")));
});

您正在执行 4 个副本,但只检查最终副本流的结尾。

要么将它们分成 4 个任务,要么合并 src 并创建单个任务来解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多