Gulp SourceMaps не работает при использовании gulp-gzip

Я использую Gulp для удаления файлов javascript и создания их исходной карты. Все идет нормально:

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());
});

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

public/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: обратите внимание, что этот файл упоминается в строке выше.

Однако я также хотел бы сжать их, поэтому мой обновленный 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());
});

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

public/js/someScript.min.js.gz

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

public/js/maps/someScript.min.js.map.gz

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


person codependent    schedule 10.07.2015    source источник


Ответы (2)


Мне удалось решить эту проблему, переименовав сгенерированные файлы карт, удалив расширение .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);
       });
}
person codependent    schedule 23.07.2015

я заархивировал файл карты.

var gunzip = require('gulp-gunzip');

// this task will depend on task sass, that generates the problem
gulp.task('uncompress_map', ['sass'], function () {
    var maploc = 'src/build/maps';
    return gulp.src(maploc+'/*.gz')
        .pipe(gunzip())
        .pipe(gulp.dest(maploc));
});
person alex    schedule 14.05.2018