使用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编译器会以同样的方式做出反应
答案 0 :(得分: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'));
});
答案 1 :(得分:1)
可悲的是,它没有。您可以做的是使用基础event-stream
的{{1}}方法。然后,您将有一个用于编译的merge
文件和一个用于javascript端的文件的管道。
以下是coffee
示例:
Gulpfile.coffee
答案 2 :(得分:1)
我将帕特里克·J·S的答案标记为“正确”,但实际上,这正是我需要做的。
那就是说,“event-stream”并不是我最终的目的,只是因为我需要保留文件的依赖结构,并且event-stream
的{{1}}方法不会保留订购也没有选择。
相反,我选择了一个名为streamqueue的包,它确实保留了glob的顺序。可能比较慢,但订单在我的应用程序中很重要。将来我会尝试尽可能模块化。