У меня есть код JavaScript, который я хочу минимизировать. Я использую задачи gulp, чтобы сделать это:
...
gulp.task('app.js', () => {
return gulp.src('src/assets/js/*.js')
.pipe(babel({presets: ['env']}))
.pipe(uglify())
.pipe(gulp.dest('src/public/js'))
})
...
Но я заметил, что у меня была ошибка javascript при попытке доступа к странице, которая загружает html с этим уменьшенным javascript:
Uncaught ReferenceError: stringClasses is not defined
at newElement (jv.js:1)
at new Screen (jv.js:1)
at HashGame (jv.js:1)
at jv.js:1
Итак, я подумал, что это проблема с функцией uglify()
и удалил шаг uglify, но проблема продолжается (поэтому проблема в babel):
Uncaught ReferenceError: stringClasses is not defined
at newElement (jv.js:12)
at new Screen (jv.js:137)
at HashGame (jv.js:153)
at jv.js:162
Оригинальная функция newElement:
function Item(id){
this.elem = newElement('div', 'item', 'pencilBorder')
this.elem.id = id
this.play = (checker) => {
if (!this.elem.attributes.filled){
this.elem.innerHTML = 'X'
this.elem.attributes.value = 'X'
this.elem.setAttribute("filled", true)
if (!checker.check()){
robotPlay()
checker.check()
}
}
}
this.elem.onclick = (e) => {
this.play(new Checker())
}
}
и babel меняет его на:
function newElement(tagName) {
var elem = document.createElement(tagName);
for (var _len = arguments.length, classNames = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
classNames[_key - 1] = arguments[_key];
}
stringClasses = classNames.reduce(function (ac, current) {
return ac + " " + current;
});
elem.className = stringClasses;
return elem;
}
Я искал опции babel и пробовал новые пресеты, но ничего не получалось. Кто-нибудь знает как это решить?