Skip to content
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

[Enhance]优化Babel重复注入helper函数问题 #290

Open
Awen-hub opened this issue Apr 24, 2022 · 1 comment
Open

[Enhance]优化Babel重复注入helper函数问题 #290

Awen-hub opened this issue Apr 24, 2022 · 1 comment

Comments

@Awen-hub
Copy link

Awen-hub commented Apr 24, 2022

关联issue

解决方案

build.json中增加字段envOptions, 用于修改此处@babel/preset-env插件的参数
简单实现:

build.json
{
  "envOptions": {
    "targets": {
      "chrome": "90"
    }
  }
}
output.js
[[require('@babel/preset-env'), {
      exclude: ['@babel/plugin-transform-regenerator'],
      ...envOptions
}]]

原因说明

关键目的在于抽离Babel的helper函数。而这个功能目前微信开发者工具已经具备,可参考微信Bebel转译说明 ,
经过实验发现,无论传给微信开发者工具的代码是否经过es6转译es5,开发者工具都会自动注入完整的helper函数。因此在rax端解决helper函数多次注入问题并不是最优解,原因是这样至少都会有一次的重复注入。合理的做法应该是让开发者通过配置,选择性关闭部分es6转译es5功能,使rax端生成的代码不含helper函数,把转译任务交给开发者工具。

为什么强调选择性关闭?
微信小程序并没有完全兼容es6+语法,因此对部分较新的语法进行转译是有必要的。需要转译到什么程度,开发者可以通过配置envOptions.targets字段值去解决。

目前遇到的问题

新增build.json字段需要修改build-plugin-component这个插件, 不了解修改这个插件代码需要在哪里提pr。

@Awen-hub
Copy link
Author

@ChrisCindy 麻烦看一下这样处理是否会对其他工程造成影响,有明确的方案后我这边会提交一个pr

@Awen-hub Awen-hub changed the title [Feature]优化Babel重复注入helper函数问题 [Enhance]优化Babel重复注入helper函数问题 Apr 24, 2022
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

No branches or pull requests

1 participant