Предотвратить глоток угорь от удаления es6 - PullRequest
0 голосов
/ 10 января 2019

Я использую gulp babel для компиляции es6, но похоже, что uglify полностью удаляет мой es6. Я не получаю никаких ошибок в моей командной строке при запуске. Любые идеи, почему это удаляется?

Моя задача глотка выглядит так:

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

Мой JavaScript:

document.addEventListener('DOMContentLoaded', function (event) {
  console.log('ready to es6!');
  const foo = 4;
});

Выводимый, скомпилированный / увеличенный javascript:

"use strict";document.addEventListener("DOMContentLoaded",function(e){console.log("ready to es6!")});
//# sourceMappingURL=scripts.js.map

Обратите внимание, что const foo = 4 пропущен. Удаление .pipe(babel()) приводит к правильной компиляции const.

Если это полезно, devDependencies:

"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.2.3",
"browser-sync": "^2.26.3",
"gulp": "^3.9.1",
"gulp-babel": "^8.0.0-beta.2",
"gulp-sass": "^4.0.2",
"gulp-sourcemaps": "^2.6.4",
"gulp-uglify": "^3.0.1",
"node-sass": "^4.11.0"
}

1 Ответ

0 голосов
/ 10 января 2019

UglifyJS (зависимость от gulp-uglify) имеет опцию Compress, которая по умолчанию удаляет неиспользуемые переменные. Поскольку вы никогда не ссылаетесь на foo, оно удаляется из сжатого источника.

Из UglifyJS2 документы :

Варианты сжатия: unused (default: true) - отбрасывать функции и переменные, на которые нет ссылок (простые прямые назначения переменных не считаются ссылками, если не установлено "keep_assign")

Поскольку const foo = 4 - это простое прямое присвоение переменной, оно не появляется в вашем сжатом коде. Вы можете либо предположить, что вам не нужен неиспользуемый код, либо настроить файл gulp следующим образом:

gulp.task('scripts', function () {
  return gulp.src('src/js/*.js')
  .pipe(sourcemaps.init())
  .pipe(babel())
  .pipe(uglify({
     compress: {
       unused: false
     }
   }))
  .pipe(sourcemaps.write('./'))
  .pipe(gulp.dest('dist/js'));
});
...