webpack 用于大型项目中,特别是开发时候的热更新,速度太慢,原因是webpack
采用了整个项目所有文件一起打包的方案。
自从 vite
推出以来,打包这块做到了性能上的超越。vite
的原理是在SPA项目中,基于入口文件打包的,由于只打包一个文件,所以速度就上来了。
而无论是 vite
和 webpack
均是基于 esbuild
开发的。所以研究一下 esbuild
的配置是比较有价值的。
本项目是基于 create-react-app
创建项目,再用 es-build
作为开发热更新打包。
不改动CRA生成的基础结构下的改动
用 create-react-app
生成项目后,然后对原来的项目作了如下改动:
- 生成
devBuild.js
文件,进行如下改动:
1 | import browserSync from "browser-sync"; |
依赖安装:
核心:
esbuild
,esbuild-plugin-svgr
用于创建服务渲染打包文件:browser-sync
解析命令行参数:command-line-args
打包文件删除:del
获取当前可用端口:get-port
美化:chalk
package.json
的script
增加了dev
命令,为跑devBuild.js
文件package.json
增加了{"type": "module"}
让 node 可以编译 esm 语法将
public/index.html
文件增加如下:1
2
3
4
5
6...
<link rel="stylesheet" type="text/css" href="./dist/index.css" />
...
<script type="module">
import './dist/index.js'
</script>增加
public/react-shim.js
文件,并在devBuild.js
写入相应配置,在src中就不用到处引入React了:1
2import * as React from 'react'
export { React }