esbuild
是基于 Golang
开发的一款打包工具,其主要目的是为了提升构建速度,相比传统打包工具速度可快 10 ~ 100 倍。
esbuild-loader
是一个构建在 esbuild
上的 webpack loader
,且可以替代 babel-loader
或 ts-loader
来提高构建速度。
安装
pnpm i -D esbuild-loader
配置
替换 ts-loader
和 babel-loader
babel-loader
配置:
{
test: /.tsx?$/,
use: [{loader: 'babel-loader'}, {loader: 'ts-loader'}],
exclude: [/node_modules/],
},
{
test: /.jsx?$/,
loader: 'babel-loader',
options: {
cacheDirectory: true,
},
exclude: [/node_modules/],
},
esbuild-loader
配置:
{
test: /.jsx?$/,
loader: 'esbuild-loader',
options: {
loader: 'jsx',
target: 'es2018',
jsx: 'automatic',
tsconfigRaw: {},
// implementation: esbuild, // 自定义 esbuild 版本
},
exclude: [/node_modules/],
},
替换 TerserPlugin
和 CssMinimizerPlugin
TerserPlugin
和 CssMinimizerPlugin
配置:
new TerserPlugin({
parallel: true,
extractComments: false,
terserOptions: {
ecma: 5,
compress: {
drop_console: true,
},
format: {
comments: false,
},
parse: {},
mangle: true,
module: false,
},
}),
new CssMinimizerPlugin({
parallel: true,
minimizerOptions: {
preset: [
'default',
{
discardComments: {removeAll: true},
},
],
},
}),
esbuild-loader
配置:
new ESBuildMinifyPlugin({
target: 'es2018',
css: true, // 缩小CSS
minify: true, // 缩小JS
minifyWhitespace: true, // 去掉空格
minifyIdentifiers: true, // 缩短标识符
minifySyntax: true, // 缩短语法
legalComments: 'none', // 去掉注释
// implementation: esbuild, // 自定义 esbuild 版本
}),
使用
以 huxy-admin ( https://github.com/ahyiru/huxy-admin ) 项目为例,测试一下速度提升了多少。
babel-loader
开发环境构建时间:1654 ms
babel-loader
生产环境打包时间:3880 ms
esbuild-loader
开发环境构建时间:1057 ms
esbuild-loader
生产环境打包时间:2977 ms
babel-loader
打包资源大小:1.7 MB
esbuild-loader
打包资源大小:1.6 MB
构建速度有所提升,打包资源大小变化不大。如果是大型项目,效果可能更明显。
原文始发于微信公众号(前端道萌):webpack + esbuild-loader 提升构建速度
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101894.html