8000 remove babel-preset polyfill configure by Luncher · Pull Request #122 · qiniu/builder · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

remove babel-preset polyfill configure #122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Conversation

Luncher
Copy link
Contributor
@Luncher Luncher commented Mar 21, 2020

builder 当前依赖于 transform-runtime 来做 polyfill 的工作。好处是 without global pollution。另外,同时配置 presetcorejstransform-runtimecorejs 是不推荐的做法,所以可以把 preset 的相关配置去掉..

@nighca
Copy link
Collaborator
nighca commented Mar 22, 2020

@surmon-china 瞅一眼?

@surmon-china
Copy link
Contributor

@Luncher
@nighca

简单说:不能删,polyfill 就是靠这俩参数工作的。

Builder 对 babel 相关依赖是内部控制的,即:”对外屏蔽实现(也就是说:外部始终不具备选择 Babelcore-js ... 版本的能力)”;

而 polyfill 的能力依赖于 useBuiltIns && code-js && VirtualModule,所以这三者都是 polyfill 能力实现的必要条件,所以不可移除。

代码中有纠正空间的地方是:transform-runtimecore-js 版本应始终与 preset-envcore-js 版本一致,所以应尽量使用同一个变量来控制,但是只要所有消费 code-js 的地方指定的版本是一致的,就不会存在实际问题。

@Luncher
Copy link
Contributor Author
Luncher commented Mar 25, 2020

@Luncher
@nighca

简单说:不能删,polyfill 就是靠这俩参数工作的。

哪两?transform-runtime 和,babel-preset-env。在我看来是目前实现 polyfill两个手段。当下的 builder 只用了 transform-runtime 来做这个事情。所以我觉得可以去掉一边的配置。

而 polyfill 的能力依赖于 useBuiltIns && code-js && VirtualModule,所以这三者都是 polyfill 能力实现的必要条件,所以不可移除。

同上我觉得不对..

代码中有纠正空间的地方是:transform-runtime 的 core-js 版本应始终与 preset-env 的 core-js 版本一致,所以应尽量使用同一个变量来控制,但是只要所有消费 code-js 的地方指定的版本是一致的,就不会存在实际问题。

感觉好像也不对,配置成一样,只是掩盖了问题..

参考:babel/babel#10271 (comment)

@surmon-china
Copy link
Contributor

@Luncher

babelPluginTransformRuntime 是之前就存在的模块,具体存在的意义 @nighca 更了解;

它和 builder 的 polyfill 是没有关系的,polyfill 是否工作取决于用户的 addPolyfill 配置,addPolyfill 只决定生成的 presets 是否包含 polyfill 配置;

babelPluginTransformRuntime 的工作,取决于 配置中是否指定了此 plugin,而目前看来 babelPluginTransformRuntime 相关的代码似乎仅仅是为了精确控制 corejs 的版本(同时也达到了 polyfill 的效果)。

总的来说:两者默认都不工作,都需要用户添加对应配置才会工作,但上次升级时为何还保留着babelPluginTransformRuntime,我记不起了,这点需要 @nighca 复盘。

@nighca
Copy link
Collaborator
nighca commented Apr 21, 2020

babelPluginTransformRuntime 是之前就存在的模块,具体存在的意义 @nighca 更了解;

@surmon-china 我看 babelPluginTransformRuntime 这个是你在 #112 里加的?

总的来说:两者默认都不工作,都需要用户添加对应配置才会工作,但上次升级时为何还保留着babelPluginTransformRuntime,我记不起了,这点需要 @nighca 复盘。

猜测是上次加的时候,误以为这俩需要一起工作了?

@surmon-china
Copy link
Contributor

我尝试更新一个新版本,但是注意,@babel/plugin-transform-runtime@babel/polyfill 的能力并不完全对等,阅读下面的译文有详细解释。

https://blog.windstone.cc/es6/babel/@babel/plugin-transform-runtime.html#%E5%85%B3%E4%BA%8E-babel-plugin-transform-runtime-%E5%92%8C-babel-polyfill-%E7%9A%84%E5%8C%BA%E5%88%AB

@surmon-china
Copy link
Contributor

v1.18.0 - PR #126

@Luncher Luncher closed this Jul 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants
0