typescript - Excluir polyfills de babel para bibliotecas estándar
Mientras agrupamos nuestro proyecto TS en es5 usando babel y webpack, vemos polyfills para métodos estándar de cadenas como
String.replace, String.match, String.split
Added following core-js polyfill:
es.array.join { "ie":"11" }
Added following core-js polyfills:
es.string.replace { "edge":"17", "firefox":"67", "ie":"11", "ios":"12", "safari":"12.1", "samsung":"9.2" }
es.string.split { "edge":"17", "ie":"11" }
Según los cuadros de compatibilidad de MDN y otras tablas de compatibilidad confiables, estos métodos son totalmente compatibles con todas estas plataformas. Pero por qué Babel añadiría polyfills para ellos sigue siendo una pregunta para nosotros.
¿Hay una manera de desactivar los polyfills de estos métodos estándar a través de la configuración de Babel? A continuación está nuestra configuración de Babel, indícanos si nos falta algo.
const presets = [
[
'@babel/env', // Using babel preset-env
{
debug: true, // Disabling debug output in console
targets: {
browsers: ['> 1%', 'not dead', 'not ie < 8'], // Spit code for all browsers with usage > 1% and not dead.
},
useBuiltIns: 'usage', // Use polyfills for runtime feature support
corejs: 3, // Use core-js 3 Polyfills.
},
],
];
const plugins = [
'@babel/plugin-transform-runtime', // Use Babel helpers to prevent code bloating with helpers
];
module.exports = { presets, plugins };