2015-07-10 4 views
0

Я использую Gulp для uglify javascript-файлов и создания их исходной карты. До сих пор так хорошо:Gulp SourceMaps не работает при использовании gulp-gzip

var gulp = require('gulp'); 
var plugins = require('gulp-load-plugins')(); 

gulp.task('compress-js', ['clean-js'], function() { 
    return gulp.src('./resources/js/**/*.js') 
    .pipe(plugins.sourcemaps.init()) 
    .pipe(plugins.uglify()) 
    .pipe(plugins.rename({extname: '.min.js'})) 
    .pipe(plugins.sourcemaps.write('./maps')) 
    .pipe(gulp.dest('./public/js')) 
    .pipe(plugins.livereload()); 
}); 

Этот код генерирует следующие выходные файлы и папки, которые правильно загружены браузером:

общественности/JS/someScript.min.js

function doSomeStuff(){console.log("This stuff function simply says: hello!!") 
//# sourceMappingURL=maps/someScript.min.js.map 

public/js/maps/someScript.min.js.map: Обратите внимание, что этот файл ссылается в строке выше.

Однако я также хотел бы GZIP их так, мой обновленный gulpfile.js является:

gulp.task('compress-js', ['clean-js'], function() { 
    return gulp.src('./resources/js/**/*.js') 
    .pipe(plugins.sourcemaps.init()) 
    .pipe(plugins.uglify()) 
    .pipe(plugins.rename({extname: '.min.js'})) 
    .pipe(plugins.sourcemaps.write('./maps')) 
    .pipe(plugins.gzip()) 
    .pipe(gulp.dest('./public/js')) 
    .pipe(plugins.livereload()); 
}); 

Теперь я получаю эти файлы:

общественности/JS/someScript.min.js.gz

function doSomeStuff(){console.log("This stuff function simply says: hello!!")} 
//# sourceMappingURL=maps/someScript.min.js.map 

общественные/JS/карты/someScript.min.js.map.gz

карта источник не связан, поскольку файл js.gz ссылается someScript.min.js.map вместо someScript.min.js.map.gz. Что мне не хватает? Как я могу сделать ссылку на файл правильным расширением?

ответ

1

мне удалось решить эту проблему путем переименования сгенерированных файлов карты, удаляя расширение .gz:

gulp.task('compress-js', function(cb) { 
    gulp.src('./resources/js/**/*.js') 
    .pipe(plugins.jshint()) 
    .pipe(plugins.sourcemaps.init()) 
    .pipe(plugins.uglify()) 
    .pipe(plugins.rename({extname: '.min.js'})) 
    .pipe(plugins.sourcemaps.write('./maps')) 
    .pipe(plugins.gzip({ append: true })) 
    .pipe(gulp.dest('./public/js')) 
    .pipe(plugins.livereload()) 
    .on('end', function() { 
     postProcessMapFiles('./public/js/maps/**/*.map.gz', './public/js/maps', cb); 
    }); 
}); 

function postProcessMapFiles(compressedMapFiles, publicDir, cb){ 
    gulp.src(compressedMapFiles) 
     .pipe(plugins.debug()) 
     .pipe(plugins.rename({extname: ''})) 
     .pipe(plugins.debug()) 
     .pipe(gulp.dest(publicDir)) 
     .on('end', function() { 
      del([compressedMapFiles], cb); 
     }); 
} 
Смежные вопросы