如何用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/数组,其中包含通过多重匹配运行的匹配模式