如何使用coffescapet与uglify在一起

How to use coffescript with uglify in gulp?

本文关键字:uglify 在一起 coffescapet 何使用      更新时间:2024-07-13

我有以下项目结构

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

我想编译coffescriptions文件(*.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);

uglify插件可能正在尝试压缩.js.coffee文件,但我不知道确切的原因。我该怎么修?

Uglify因为遇到coffescript而失败。这表明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

接受通过多批次运行的具有全局模式的字符串/数组