1

我有这个任务:

  • html:

    • 将 .jade 转换为 .html
    • 将 Bower 资源(css、js 和字体)复制到 /dest/vendor 文件夹
    • 将凉亭资源添加到 .html(脚本和链接标签)
    • 将我的 js(来自 /dest/js)和我的 css(来自 /dest/css)添加到 .html(如 prev.)
  • 建造

    • 清理 /dest 文件夹
    • 将我的 js 复制到 /dest/js(只需复制,无需处理)
    • 处理我的 less 文件,并作为 css 移动到 /dest/css

如果我运行gulp build然后gulp html,一切正常。但是,如果添加html作为构建的最后一部分,请不要做更多工作。Jade 被转换为 .html 文件,所有资源(我的和 bower)都被复制到 /dest 文件夹,但是(添加脚本wiredepinject链接标签)似乎什么都不做。

这是(一部分)我的任务:https ://gist.github.com/Falci/f52d4144318c9d5e4c2f

4

1 回答 1

1

我发现您的构建存在一些潜在问题。

  1. 您必须从每个任务返回流。Gulp 依靠每个任务的返回值来确定该任务何时完成。如果您使用没有返回值的任务作为另一个任务的依赖项,则依赖项将立即解决,而不是等待任务完成。您应该使用返回值而不是使用next()回调。

    function htmlAssetsTask () {
        var sources = gulp.src(config.filesets.assetsDest, {read: false});
        return gulp.src(config.filesets.html)
        ...
    }
    
  2. Gulp 任务依赖没有按顺序运行。这意味着在任务中:

    gulp.task('build', ['clean:dest', 'build:js', 'build:less', 'html']);
    

    依赖项可以按任何顺序运行。我建议在重要的时候使用run-sequence包来确保任务依赖的顺序。

于 2015-03-09T19:59:45.040 回答