我们是否需要在应用程序中结合转换运行时和预设环境?

Sma*_* NE 8 javascript webpack babeljs

问题 1

我发现(webpack)包(输出)结果中有很多不必要的重复,具体来说,它们都是帮助器(如classCheckobjectSpread(由于对象扩展插件)。

所以,我想减少重复。如果它是一个库,当然,我将使用转换运行时插件(请参阅runtime-corejs3)来执行此操作。但是现在这是一个应用程序,那么正确的方法是什么?

因此我很困惑,因为该transfrom-runtime插件被推荐用于库(并且是为了整个减少。即core-jsregenerator和助手)。但在这里我只想减少助手重复,而不是其他重复,因为这babel/env.

所以在这里我想问/讨论的问题是是否有必要减少应用程序中helpers重复,如果是,以及如何减少?

问题2

另一个问题是,core-js/modules/es.promise.jscore-js-pure/modules/es.promise.js代码完全一样,主要区别只是前者有全局污染?如果是这样,为什么core-js不使用(直接导入)core-js-pure来填充然后将其添加到全局?IMO,这将大大减少重复,因为现在库使用transform-runtime(最终core-js-pure)但应用程序使用preset-env(最终core-js),应用程序和库之间没有共享/可共享代码,对吗?

Mas*_*iri 4

@babel/plugin-transform-runtime:添加polyfills而不将它们附加到全局范围。

@babel/preset-envwith useBuiltins: "usage":将填充添加到全局范围。

@babel/preset-envwith useBuiltIns: false (default): 不要添加polyfills。

因此@babel/plugin-transform-runtime建议 应用程序都添加 polyfill。

babel.config.js:

module.exports = {
  presets: ['@babel/preset-env'],
  plugins: [
    '@babel/transform-runtime',
  ],
};
Run Code Online (Sandbox Code Playgroud)