2016-08-21 3 views
2

У меня есть gulp.task 'scripts', который использует gulp-uglify. Затем я добавил gulp-import, и это не сработало. Если я делаю только uglify, он работает. Если я делаю только import, он работает. Но если я делаю оба одновременно, это не сработает. Вот функция:gulp-include с gulp-uglify не работает

gulp.task('scripts', function(){ 
    gulp.src([ 
      'testgulp/**/*.js', '!testgulp/**/_*.js', '!testgulp/**/*.min.js' 
     ]) 
     .pipe(include()) //if I comment only this line, uglify works 
      .on('error', console.log) 
     .pipe(uglify()) //if I comment only this line, include works 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(gulp.dest(function(file) { return file.base; })); 

}); 

А потом на терминале я этот ответ, когда пытаются сделать так:

/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/map-stream/index.js:103 
     throw err 
     ^
GulpUglifyError: unable to minify JavaScript 
    at createError (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/gulp-uglify/lib/create-error.js:6:14) 
    at wrapper (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/gulp-uglify/node_modules/lodash/_createHybrid.js:87:15) 
    at trycatch (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/gulp-uglify/minifier.js:26:12) 
    at DestroyableTransform.minify [as _transform] (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/gulp-uglify/minifier.js:76:19) 
    at DestroyableTransform.Transform._read (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:159:10) 
    at DestroyableTransform.Transform._write (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:147:83) 
    at doWrite (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:313:64) 
    at writeOrBuffer (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:302:5) 
    at DestroyableTransform.Writable.write (/Applications/MAMP/htdocs/git/personal-sandrina-p/_main/v3/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:241:11) 
    at Stream.ondata (stream.js:31:26) 

Я отходя от Koala App и функции Append/PREPEND был удивительным , поэтому я хотел бы сделать то же самое с Gulp. Я пробовал gulp-include и gulp-import, оба имеют ту же проблему. Что я делаю неправильно? Спасибо :)

-EDIT- я также попытался глоток синхронизации и жёстко тайм-аут() на minifyit задаче, но не решает проблему ...

ответ

0

Просто их как отдельные функции и имеют включать один проход до уродовать один:

gulp.task('include,function({ 
     // include code here 
}); 

gulp.task('uglify',['include'],function({ 
      // uglify code here 
}); 

включаемые функции между [] будет работать до уродовать функции при запуске уродовать функцию

+0

Я тоже пробовал, но это не было исправлено. проблема заключалась в сокращении на javascript, который я использовал ... проверьте мой собственный ответ выше для получения более подробной информации. –

1

Вы должны использовать модуль насоса.

var pump = require('pump'); 

    gulp.task('scripts', function(){ 
     pump([ 
      gulp.src([...]), 
      ugilfy(), 
      rename({ suffix: '.min' }), 
      gulp.dest(...) 
     ]); 
    }); 

И вы можете увидеть why use pump

+0

В чем разница между насосом и утилитой? –

5

Хорошо, я думаю, что я нашел эту проблему. Прежде всего, мне нужно было установить gulp-util, чтобы лучше узнать, что было ошибкой.

gulp.task('scripts', function(){ 
    gulp.src([ 
      'assets/scripts/**/*.js', 
      '!assets/scripts/**/_*.js', 
      '!assets/scripts/**/*.min.js' 
     ]) 
     .pipe(include()) 
      .on('error', console.log) 
     .pipe(uglify().on('error', gutil.log)) //gulp-util 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(gulp.dest(function(file) { return file.base; })); 
}); 

Тогда это было что-то с сокращенным сокращением ES5, которое вызывает ошибку. Я должен был установить Глоток-столпотворение, а также, и окончательный код:

gulp.task('scripts', function(){ 
    gulp.src([ 
      'assets/scripts/**/*.js', 
      '!assets/scripts/**/_*.js', 
      '!assets/scripts/**/*.min.js' 
     ]) 
     .pipe(include()) 
      .on('error', console.log) 
     .pipe(babel({ 
      presets: ['es2015'], //this fixed a shorthand javascript error 
      compact: true 
     })) 
     .pipe(uglify().on('error', gutil.log)) // gulp-util 
     .pipe(rename({ suffix: '.min' })) 
}); 

И это фиксированная моя проблема. Надеюсь помочь кому-то еще :)

+0

gulp-util помог мне найти ошибку (насос не сделал), спасибо за обмен! – Stepan

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