2015-02-27 2 views
1

я следующая структура проектаКак использовать coffescript с uglify в глотке?

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

, и я хотел бы собрать coffescripts файлы (*.js.coffee), то CONCAT все файлы, а затем Минимизировать их.

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 файл, но я не знаю точно, почему. Как я могу это исправить?

+0

Что содержит application.js при возникновении ошибки? – Heikki

+0

@Heikki Согласованные файлы js перед компилятором coffescript. Строка три - 'test = ->" lol "' –

+0

Wat? :) Не может быть. Вы делаете concat ** после ** кофе. – Heikki

ответ

1

Uglify терпит неудачу, потому что он встречает coffeescript. Это указывает на то, что coffeeScriptFilesFilter не захватывает все файлы * .coffee.js.

Учитывая файлы foo.js.coffee и подкаталог/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

Принимает строку/массив с глобирование образцы, которые проходят через MultiMatch

Смежные вопросы