Есть проект в котором будут использоваться веб-компоненты. Для минификации текущего js кода используется Webpack Terser плагин (точнее laravel mix, но он использует Terser), однако данный подход генерирует много избыточного кода (пример ниже). В случае с веб-компонентами каждый файл будет минифицироваться отдельно, и такое кол-во избыточного кода не приемлимо. Есть ли способ отключить это, т.е. оставить только удаление пробелов, замену имен на буквы, но без этих всех оболочек? Поддержка старых браузеров не интересует.
Пробовал указать более высокую версию в
ecma, но это не помогло
Пример избыточного кода
function _classCallCheck(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(e, t) {
for (var r = 0; r < t.length; r++) {
var n = t[r];
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
}
}
function _possibleConstructorReturn(e, t) {
return !t || "object" !== _typeof(t) && "function" != typeof t ? function _assertThisInitialized(e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e
}(e) : t
}
function _wrapNativeSuper(e) {
var t = "function" == typeof Map ? new Map : void 0;
return (_wrapNativeSuper = function _wrapNativeSuper(e) {
if (null === e || !function _isNativeFunction(e) { ...
UPD: Это были Babel полифиллы, и я нашел способ избежать их создания :
webpack.mix.js:
// makes babel is dependent on package.json browserslist, so will skip additional polyfills
laravelMix.babelConfig({
"presets": [
[
"@babel/preset-env",
{}
]
]
});
package.json
"browserslist": [
"last 3 Firefox versions",
"last 3 Chrome versions",
"last 3 Safari versions",
"last 3 FirefoxAndroid versions",
"last 3 ChromeAndroid versions",
"last 3 iOS versions"
]