Gulp Uglify, переименование и исходные карты - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь сделать следующее в Gulp: 1) Сократите JS-файлы из указанной папки до папки с именем dist. 2) Добавьте «.min» к уменьшенным именам файлов. 3) Предоставьте исходную карту для минимизированных файлов и поместите их в папку с именем «maps».

Я использую 'gulp-uglify', 'gulp-rename' и 'gulp-sourcemaps'.

Вот что у меня есть:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');

gulp.task('compress', function () {
    gulp.src('src/*.js')
    .pipe(sourcemaps.init())
    .pipe(uglify())
    .pipe(rename({suffix: '.min'}))
    .pipe(sourcemaps.write('../maps'))
    .pipe(gulp.dest('dist'));
});

Все работает так, как задумано, за исключением файлов карты, к которым также добавляется «.min». Как ограничить переименование только в папке dist?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Можно объединить два в одну задачу, используя способность gulp-rename принимать функцию в качестве ввода:

gulp.task('prod', function() {
    return gulp.src('src.js'))
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(sourcemaps.write('.'))
        .pipe(rename(function(path) {
            if (!path.extname.endsWith('.map')) {
                path.basename += '.min';
                //gulp-rename with function only concats 'dirname + basename + extname'
            }
        }))
        .pipe(gulp.dest('build/_asset/js'));
});

Функция в основном «только» добавляет суффикс .min, если имя расширения файла не .map. Вывод будет src.min.js и src.js.map.

0 голосов
/ 05 сентября 2018

Я немного покопался и нашел решение для этого. В итоге я разбил одну задачу на две разные. Когда файлы находятся в папке dist, я вызываю задачу «переименовать». Я также использовал «vinyl-paths» и «del» для удаления переименованных файлов. Вот что у меня есть:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');
var del = require('del');
var vinylPaths = require('vinyl-paths');

gulp.task('compress', ['uglify','rename']);

gulp.task('uglify', function() {
    return gulp.src('src/*.js')
    .pipe(sourcemaps.init())
    .pipe(uglify())
    .pipe(sourcemaps.write('../maps'))
    .pipe(gulp.dest('dist'));
});

gulp.task('rename', ['uglify'], function() {
    return gulp.src('dist/*.js')
    .pipe(vinylPaths(del))
    .pipe(rename({suffix: '.min'}))
    .pipe(gulp.dest('dist'));
});
...