簡體   English   中英

如何在gulp中使用uglify和coffescript?

[英]How to use coffescript with uglify in gulp?

我有以下項目結構

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

我想編譯coffescripts文件( *.js.coffee ),然后*.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失敗,因為它遇到了coffeescript。 這表明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

接受具有通過多次匹配運行的通配模式的字符串/數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM