功能
模块热更新
webpack
使用的是webpack-dev-server
的热更新。React的热更新使用的是@pmmmwh/react-refresh-webpack-plugin
插件实现的。React的热更新默认是不开启的,如果需要开启可指定reactRefresh: true
开启。
rspack
使用的是@rspack/dev-server
的热更新。具体参考配置dev-server。
Typescript
webpack
Rzpack默认支持.ts
和.tsx
文件。webpack
默认使用的打包工具是esbuild
,也可通过assets.jsxTools
指定使用swc
或者esbuild
。
export enum JSX_TOOLS {
ESBUILD = 'esbuild',
SWC = 'swc',
}
rspack
使用内置的swc
打包工具。
Css
导入.css
文件将会把内容开发环境插入到<style>
标签中生产环境打包成文件,同时也带有HMR
支持。
PostCSS
如果项目包含有效的PostCSS
配置 (任何受postcss-load-config支持的格式,例如postcss.config.js
),它将会自动应用于所有已导入的CSS。
CSS Modules
任何以.module.css
为后缀名的 CSS 文件都被认为是一个CSS modules
文件。导入这样的文件会返回一个相应的模块对象:
/* button.module.css */
.button{
background: #fff;
}
.button-primary{
background: blue;
}
import classes from './button.module.css'
document.getElementById('btn').className = classes.button
document.getElementById('btn-primary').className = classes.buttonPrimary
默认导入的对象属性名支持小驼峰
转换。
Css预处理器
默认支持less
。如果需要使用其他预处理器,可以通过rzpackChain
属性自行配置webpack
/rspack
配置。
Css Scoped
可通过assets.cssScoped
开启类似于Vue的CSS Scoped功能。开启后,会自动识别.scoped.css
文件。
静态资源处理
导入一个静态资源会返回解析后的 URL。对于svg
来说,默认支持导入为React组件,如果想导入为图片地址则导入时加?url
即可。
如果需要图片打包压缩,可指定assets.imageMini: true
开启图片压缩,需要注意开启后打包速度将变慢。
JSON
JSON 可以被直接导入 —— 同样支持具名导入
Antd主题定制
可通过antdTheme
属性进行antd主题定制配置。可指定配置文件也可直接指定变量。
Less变量注入
可通过lessVars
属性进行antd主题定制配置。可指定配置文件也可直接指定变量。
控制台输出编译信息
可通过buildInfo: true
将项目名
、版本号
、打包时间
、打包分支
、最后一次提交commit id
输出在控制台。
构建优化
可通过设置cache
开启webpack5的缓存,以及通过lazyCompilation
开启懒编译。
注意:cache目前因为
rspack
进支持内存缓存,暂无法支持本地缓存,等rspack
支持了,会第一时间支持。
性能优化
可设置gzip
开启GZIP压缩,以及moduleFederation
配置模块联邦,million
使用Million.js进行React性能优化。
接口代理
webpack
可通过server
配置webpack-dev-server
或@rspack/dev-server
的接口代理。也可通过proxyFile
配置可视化管理接口代理的json文件。注意:当开启可视化配置时,不再需要在server
中指定接口代理。