Skip to content

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

@Awen-hub

Description

@Awen-hub

关联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。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions