¿Necesitamos combinar transform-runtime y preset-env en una aplicación?

8

Pregunta 1

Encuentro que hay muchas duplicaciones innecesarias en el resultado del paquete (salida) (paquete web), para ser específicos, todos son ayudantes (como classCheck, objectSpreaddebido al complemento de propagación de objetos).

Entonces, quiero reducir las duplicaciones. Si es una biblioteca, seguro, usaré el complemento transform-runtime (consulte runtime-corejs3) para hacer esto. Pero ahora esta es una aplicación , entonces, ¿cuál es la forma correcta de hacer esto?

Por lo tanto, me estoy confundiendo porque el transfrom-runtimecomplemento se recomienda para la biblioteca (y es para toda la reducción core-js, es decir , regeneratory los ayudantes). Pero aquí solo quiero reducir las cooperadoras duplicaciones, no en otras duplicaciones debido a que se ha hecho por babel/env.

Entonces, la pregunta que quiero hacer / discutir es si es necesario reducir las helpersduplicaciones en una aplicación , en caso afirmativo, ¿y cómo?

Pregunta 2

La otra pregunta es, core-js/modules/es.promise.jsy core-js-pure/modules/es.promise.jsson exactamente el mismo código, ¿la principal diferencia es que el primero tiene contaminación global? Si es así, ¿por qué core-jsno usa (importar directamente) core-js-purepara polyfill y luego lo agrega a global? En mi opinión, esto reducirá en gran medida las duplicaciones porque ahora las bibliotecas usan transform-runtime(finalmente core-js-pure) pero las aplicaciones usan preset-env(finalmente core-js), no hay códigos compartidos / compartibles entre aplicaciones y bibliotecas, ¿verdad?

SmallTown NE
fuente
no está claro lo que quieres lograr al final
Leonardo
@Leonardo "¿es necesario reducir las duplicaciones de ayudantes en una aplicación, en caso afirmativo, y cómo?"
SmallTown NE
¿Está habilitado el movimiento de árbol webpack? [ webpack.js.org/guides/tree-shaking/]
Varun Goel
@VarunGoel Creo que no se trata de sacudidas de árboles porque se trata de duplicaciones, no se usa / no se usa
SmallTown NE

Respuestas:

0

@babel/plugin-transform-runtime: agrega polyfills sin asociarlos al ámbito global.

@babel/preset-envcon useBuiltins: "usage": agrega polyfills al alcance global.

@babel/preset-envcon useBuiltIns: false (default): No agregue polyfills.

Por @babel/plugin-transform-runtimelo tanto, se recomienda tanto para la biblioteca como para la aplicación agregar polyfills.

babel.config.js:

module.exports = {
  presets: ['@babel/preset-env'],
  plugins: [
    '@babel/transform-runtime',
  ],
};
Masih Jahangiri
fuente