Skip to main content

实验性功能

插件说明

本插件会包含一系列实验性的能力,来优化构建速度、提供更丰富的产出分析等。

caution

本插件并不遵循Semver规范,在任意版本中都可能产生不兼容的变化,如需使用请务必保持好心态。

使用

安装

npm i -D @reskript/plugin-experimental

构建提速

note

仅在5.7.0后版本中提供,当前仅支持Webpack引擎。

buildFast插件将提供一系列的构建提速能力,包括:

  • 使用SWC代替Babel进行文件的编译。
  • 使用SWC来压缩文件。

简单地引入并加在plugins中即可启用:

// reskript.config.ts
import {configure} from '@reskript/settings';
import {buildFast} from '@reskript/plugin-experimental';

export default configure(
'webpack',
{
plugins: [
buildFast(),
],
}
);

在引入buildFast插件后,虽然构建速度能得到提升,但会有如下的代价:

  • 因为SWC并非纯JavaScript实现,它的安装依赖于操作系统、内核等,在部分环境下可能出现安装失败的问题。
  • 你无法使用由reSKRipt提供的特有Babel能力,包括React组件自动添加displayName、在Devtool中组件与代码文件关联功能。
  • 不能使用styled-components,建议使用emotion替代。
  • 不再有诸如移除propTypes、提升React常量元素等细节优化。
  • 在使用antd的过程中可能出现问题,见下文。
  • 其它SWC与Babel的差异点。

如果你使用antd作为组件库,为了保持原有的组件按需引入的能力,reSKRipt会对你的antd导入做一些特殊的处理,详细来说,诸如以下的代码:

import {Button, Select} from 'antd';

会被处理成:

import Button from 'some/reskript/internal/path/Button';
import Select from 'some/reskript/internal/path/Select';

其中如some/reskript/internal/path/Button这一模块的内容大致是这样的:

import 'antd/es/button/style';
export {default} from 'antd/es/button';

通常情况下,这一处理并不会导致你的构建出现问题,如果遇到情况,可以向我们反馈。