如何用uglify使用coffescript?

我有以下项目结构

assets --javascripts ----controllers ------somefile.js ------somefile.js.coffee 

我想编译coffescripts文件( *.js.coffee ),然后连接所有的文件,然后缩小它们。

 var gulp = require('gulp') var concat = require('gulp-concat') var coffee = require('gulp-coffee'); var uglify = require('gulp-uglify') var gulpFilter = require('gulp-filter'); gulp.task('scripts', function() { var coffeeScriptFilesFilter = gulpFilter(['*.js.coffee']); return gulp.src(['assets/javascripts/**/*']) .pipe(coffeeScriptFilesFilter) .pipe(coffee()) .pipe(coffeeScriptFilesFilter.restore()) .pipe(concat('application.js')) .pipe(gulp.dest('public')) .pipe(uglify().on('error', errorHandler)); function errorHandler (error) { console.log(error.toString()); this.emit('end'); } }); 

不幸的是我得到这个错误

 Error in plugin 'gulp-uglify' Message: /var/www/gulp/public/application.js: Unexpected token: operator (>) Details: fileName: /var/www/gulp/public/application.js lineNumber: 3 

没有uglify插件一切正常。 结果是

 console.log('hello!'); var lol = 'asd!'; (function() { var test; test = function() { return "lol"; }; }).call(this); 

.js.coffee插件可能是试图压缩.js.coffee文件,但我不知道为什么。 我该如何解决?

Uglify因遇到咖啡脚本而失败。 这表明coffeeScriptFilesFilter不会捕获所有* .coffee.js文件。

给定文件foo.js.coffee和subdir / foo.js.coffee:

 // this matches only foo.js.coffee gulpFilter('*.js.coffee'); // this matches both gulpFilter('**/*.js.coffee'); 

https://github.com/sindresorhus/gulp-filter#pattern

接受一个string/数组,其中包含通过多重匹配运行的匹配模式