Как я могу сжать uglify js с помощью Gulp, не создавая два файла в папке dist

Я новичок в использовании Gulp.

Мне интересно, как я могу объединить, исказить и сжать все файлы js со статического веб-сайта с помощью Gulp.

У меня есть такая задача, которая работает, но я хотел бы включить в папку dist только файл .gz, а не комбинированный .js

gulp.task("concat-js", function () {
return gulp.src("./src/js/*.js")
    .pipe(concat("combined.min.js"))
    .pipe(uglify())
    .pipe(gzip())
    .pipe(gulp.dest("./build/js"));
});

ОБНОВЛЕНИЕ

Я призываю вас читать комментарии. В моем случае проблема была вызвана неправильным использованием gulp-useref, поскольку файл генерировался в конце процесса сборки. Вероятно нубская проблема, но, надеюсь, кому-нибудь поможет.

Заранее спасибо...


person Rogelio Blanco    schedule 12.10.2017    source источник
comment
Зачем сжимать их, когда это может сделать ваш сервер?   -  person Get Off My Lawn    schedule 12.10.2017
comment
Я собираюсь использовать S3 + Cloud Front для обслуживания своего веб-сайта.   -  person Rogelio Blanco    schedule 12.10.2017


Ответы (1)


Это должно работать. Просто сохраните файл .min во временной папке. Вы можете удалить это позже, если хотите.

gulp.task("concat-js", function () {
  return gulp.src("./src/js/*.js")
   .pipe(concat("combined.min.js"))

   .pipe(gulp.dest('./temp'))

   .pipe(uglify())
   .pipe(gzip())
   .pipe(gulp.dest("./build/js"));
});

Конечным файлом будет «combined.min.js.gz», единственный в build/js. Если вам не нравится это имя, вы можете переименовать его с помощью gulp-rename.

person Mark    schedule 12.10.2017
comment
Спасибо за ваш ответ, однако я все еще вижу два файла, сгенерированных в папке сборки. - person Rogelio Blanco; 14.10.2017
comment
Хм, я запускал это несколько раз, чтобы проверить. Вы сначала удалили папку сборки, чтобы начать с чистого листа? - person Mark; 14.10.2017
comment
Похоже, что uglify() создает дополнительный файл в папке build/js. Потому что я вижу во временной папке комбинированный.js (без файла uglify) и в build/js комбинированный.min.js (файл uglify) - person Rogelio Blanco; 14.10.2017
comment
Я получаю один файл (combined.min.css) во временной папке и один файл (combined.min.css.gz) в папке build/js. Вы удалили обе эти папки перед запуском? Так это не старые файлы? Я просто говорю это, потому что это работает безупречно для меня. - person Mark; 14.10.2017
comment
Я всегда удаляю папку перед запуском сборки. Я только что узнал, что это работает для файлов css, но не для файлов js. Я думаю, это работает для вас, потому что вы используете файлы css, можете ли вы попробовать с файлами js? - person Rogelio Blanco; 14.10.2017
comment
Я пробовал с обоими. Я просто забыл изменить concat(....css) на .js. Но он отлично работает с обоими типами файлов. Я сделал тестовую ситуацию вашей структуры папок с парой файлов js в ней. У вас происходит что-то еще, не связанное с этим. Gulp-uglify не меняет имена файлов stackoverflow .com/questions/38244655/ - person Mark; 14.10.2017
comment
Марк, какую версию gulp-uglify, gulp-rename, gulp-concat вы используете? Большое спасибо за Вашу помощь - person Rogelio Blanco; 14.10.2017
comment
уродовать: 3.0.0; переименовать: 1.2.2: concat: 2.6.1 - person Mark; 14.10.2017
comment
Марк, похоже, что gulp-userref создает и переопределяет файл :( когда я пытаюсь заменить несколько javascripts в html. Я собираюсь изменить некоторые вещи, но я думаю, что вы правы и кажется проблемой с моего сайта неправильное использование gulp-userref - person Rogelio Blanco; 14.10.2017
comment
Надеюсь, ты разберешься. В то же время, если вы сможете проверить правильность моего ответа, это поможет другим узнать об этом, если вы примете его как таковой. Вы можете задать другой вопрос, показывающий, как вы включаете useref и результирующие имена файлов. - person Mark; 14.10.2017