Я использую Babel 7 и Gulp 4 вместе и обнаружил, что следующая строка кода появляется в моей сборке 5 раз:
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Может быть, я что-то упустил, но это кажется избыточным? Подробности моей конфигурации можно найти ниже:
пакет. json
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/plugin-transform-runtime": "^7.8.3",
"@babel/preset-env": "^7.8.4",
"@babel/register": "^7.8.3",
"babel-eslint": "^10.0.3",
"del": "^5.1.0",
"eslint": "^6.8.0",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0",
"gulp-concat": "^2.6.1",
"gulp-eslint": "^6.0.0",
"gulp-rename": "^2.0.0",
"gulp-terser": "^1.2.0"
},
"dependencies": {
"@babel/runtime": "^7.8.4",
"core-js": "^3.6.4",
"lodash": "^4.17.15"
}
gulpfile.babel. js (включая только функция, использованная для задачи сборки)
function createBuildTask() {
var sourceArray = [
// I'm building from 12 different files, but have simplified for this posting
'file1.js', 'file2.js', 'file3.js', 'file4.js', ...
];
return function () {
return gulp.src(sourceArray, {'allowEmpty': true})
.pipe(babel({
'presets': ['@babel/preset-env'],
'plugins': []
}))
.pipe(concat('desktop-built.js'))
.pipe(gulp.dest('desktop/dist'))
.pipe(terser())
.pipe(rename({
'extname': '.min.js'
}))
.pipe(gulp.dest('desktop/dist'));
};
}
Что я пробовал :
Передача параметров в @ babel / preset -env:
'presets': [['@babel/preset-env', {
'modules': false,
'useBuiltIns': 'entry',
'corejs': 3
}]],
'plugins': ['@babel/plugin-transform-runtime']
... но дубликаты строк кода для Symbol все еще там после компиляции.
Как правильно сделать это, чтобы вышеупомянутая строка кода появлялась только один раз?