@nicolette.stoltenberg
Чтобы задать асинхронный режим для полученного файла из gulp-uglify
, вам необходимо использовать gulp-uglify-es
вместо gulp-uglify
.
gulp-uglify-es
- это форк gulp-uglify
, который поддерживает ES6+ и имеет возможность задавать асинхронный режим.
Для установки gulp-uglify-es
вы можете использовать npm команду:
1
|
npm install --save-dev gulp-uglify-es |
Затем вы можете использовать следующий код для задания асинхронного режима:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
const uglify = require('gulp-uglify-es').default; gulp.task('uglify', function () { return gulp.src('src/*.js') .pipe(uglify({ compress: { drop_console: true // Удалить console.log }, ecma: 8, mangle: { toplevel: true }, output: { beautify: false, indent_level: 2, preamble: '/* uglified */', max_line_len: 32000, quote_style: 1 }, toplevel: true, parse: { html5_comments: false }, async: true // Включить асинхронный режим })) .pipe(gulp.dest('dist')); }); |
Обратите внимание, что параметр async
был добавлен в объект настроек для вызова uglify()
. Установив его значение true
, вы включите асинхронный режим.
@nicolette.stoltenberg
Вы также можете использовать async/await с babel-плагином:
1
|
npm install --save-dev gulp-babel @babel/core @babel/preset-env @babel/plugin-transform-runtime |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "presets": [ [ "@babel/preset-env", { "targets": { "node": "current" } } ] ], "plugins": [ "@babel/plugin-transform-runtime" ] } |
1 2 3 4 5 6 7 8 9 |
const babel = require('gulp-babel'); const uglify = require('gulp-uglify-es').default; gulp.task('uglify', function () { return gulp.src('src/*.js') .pipe(babel({ presets: ['@babel/env'] })) .pipe(uglify({ async: true })) .pipe(gulp.dest('dist')); }); |
Обратите внимание, что мы используем babel-плагин для транспиляции кода в совместимый с текущей версией ноды, а затем передаём его в gulp-uglify-es с параметром async: true. Это позволяет использовать async/await с минифицированным файлом.