2

使用 Gulp 在每次保存的基础上简化我的构建过程,同时消除对“临时”文件的需要是我的目标(以及为什么我选择使用 Gulp 而不是 Grunt)

我最近发现,显然,coffeescript 编译器无法处理将基本 Javascript 作为源的处理

所以这个,错误出来:

gulp.task('scripts', function() {

    var stream =
            gulp.src([
                "bower_components/d3/d3.js",
                "bower_components/angular/angular.js",
                "bower_components/foundation/js/foundation.js",
                "public-dev/scripts/app.js",
                "public-dev/scripts/**/*.js",
                "public-dev/scripts/**/*.coffee"
            ])
                .pipe(coffee())
                .pipe(concat('compiled.js'))
                .pipe(gulp.dest('./public/scripts'))
        ;

    return stream;
});

这将产生输出/errpr:

[11:58:51] Starting 'scripts'...

events.js:72
        throw er; // Unhandled 'error' event
              ^
/var/www/node.fortiguard.dev/bower_components/d3/d3.js:1:2: error: reserved word "function"
!function() {
 ^

我应该如何设置它,而无需再次创建任何临时文件?

我喜欢 LESS 编译器的一点是,它仍然可以直接输入 CSS 文件,而且没问题。我有点希望 Coffee 编译器能做出同样的反应

4

3 回答 3

2

我习惯gulp-add-src这样做。

var gulp = require('gulp'),
    coffee = require('gulp-coffee'),
    concat = require('gulp-concat'),
    addsrc = require('gulp-add-src');

// Scripts
gulp.task('coffee', function () {
  return gulp.src('src/coffee/**/*.coffee')
    .pipe(coffee())
    .pipe(addsrc('src/coffee/lib/*.js'))
    .pipe(concat('compiled.js'))
    .pipe(gulp.dest('dist'));
});
于 2015-08-15T02:04:06.053 回答
1

我将 Patrick JS 的回答标记为“正确”,因为实际上,这正是我需要做的。

也就是说,“事件流”不是我最终要使用的,只是因为我需要保留文件的依赖结构,而event-stream'smerge()方法既不保留顺序也没有选项。

相反,我选择了一个名为streamqueue的包,它确实保留了 glob 的顺序。可能更慢,但不幸的是,订单在我的应用程序中很重要。将来我会尽量做到模块化。

于 2015-02-13T23:32:24.997 回答
1

可悲的是,它没有。您可以做的是使用底层event-streammerge方法。然后,您将拥有一个用于coffee编译文件的管道和一个用于 javascript 端的管道。

这是一个例子Gulpfile.coffee

coffee = require 'gulp-coffee'
es     = require 'event-stream'

gulp.task 'scripts', () ->
  es.merge(
    gulp.src(["public-dev/app.js", "public-dev/scripts/**/*.js"]) # ...
    gulp.src("public-dev/**/*.coffee").pipe coffee()
    )
  .pipe concat 'all.js'
  .pipe gulp.dest "build"
于 2015-02-13T05:09:18.010 回答