返回流时Gulp不起作用

时间:2015-01-05 22:58:30

标签: gulp

以下Gulp设置不起作用:

var templateCache = require("gulp-angular-templatecache");
var less = require("gulp-less");

gulp.task("angular-templates", function(){
      return gulp.src(TEMPLATES_SOURCES)
        .pipe(templateCache(TEMPLATES_JS, {module: "moonwalk", root: TEMPLATES_ROOT}))
        .pipe(gulp.dest("Temp/"));
});

gulp.task("less-compile",function(){
      return gulp.src("**/*.less")
        .pipe(less())
        .pipe(gulp.dest("./"));
});

gulp.task("release-assets", ["angular-templates", "less-compile"], function() {

    return gulp.src("./Content/**/*.cshtml")
        .pipe(gulp.dest("Dist/"));
});

当我运行gulp release-assets时,输出如下:

[01:24:06] Starting 'angular-templates'...
[01:24:06] Starting 'less-compile'...
[01:24:06] Finished 'angular-templates' after 605 ms

......不好......

但是,如果我通过删除return这样更改第二项任务:

gulp.task("less-compile",function(){
       gulp.src("**/*.less")
        .pipe(less())
        .pipe(gulp.dest("./"));
});

然后安装确实有效!?那么gulp release-assets的输出是:

[01:21:54] Starting 'angular-templates'...
[01:21:54] Starting 'less-compile'...
[01:21:54] Finished 'less-compile' after 2.89 ms
[01:21:54] Finished 'angular-templates' after 741 ms
[01:21:54] Starting 'release-assets'...
[01:22:03] Finished 'release-assets' after 8.9 s

我不明白这个问题。我认为return提供的流gulp.src()是强制性的。

有人可以解释一下,如果我返回gulp.src(),上述设置无法正常工作吗?

2 个答案:

答案 0 :(得分:1)

所以评论中提出的要点; return似乎没有丢掉一口气;您正在使用最新版本的gulp-less,从语法角度来看,您的任务看起来还不错。

这方面的主要内容是项目结构非常重要,因此当您指定诸如**/*.less之类的glob时,您必须知道它可以匹配哪些文件;在这种情况下,glob太贪婪,并且会匹配node_modules中可能与您的项目相关或不相关的内容。由于gulp.src是一项昂贵的操作,因此将源文件组织到目录中并将glob的范围限制在这些目录中是一种很好的做法。

一个更好的glob模式就像./lib/styles/**/*.less一样 - 这样你就可以适当地限制整个cm,你也可以将较少的文件放在一个地方。因此,您的gulp任务应如下所示:

gulp.task("less-compile", function () {
    return gulp.src("./lib/styles/**/*.less")
        .pipe(less())
        .pipe(gulp.dest("./dist/css"));
});

答案 1 :(得分:0)

我遇到了类似的问题,并通过在package.json中将已安装的gulp版本从3.8.7更改为3.8.5来解决它:

  "devDependencies": {
    "gulp": "3.8.5"
  }

新版本中的更改或错误必须阻止管道(gulp.src(' '))解析返回语句。