使用 esbuid-loader 提高前端代码的编译速度 (#7525)

* 用esbuild-loader加快打包速度

* fix: dev 模式下,esbuild 不混淆源码

* fix: 变量名混淆、删除不用的包
This commit is contained in:
yb6b 2023-03-02 08:48:29 +08:00 committed by GitHub
parent 9574085b03
commit b649a70e8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 306 additions and 71 deletions

View file

@ -61,6 +61,7 @@
"electron": "21.4.2",
"electron-builder": "^23.3.3",
"encoding": "^0.1.13",
"esbuild-loader": "^3.0.1",
"eslint": "^8.19.0",
"file-loader": "^6.2.0",
"html-loader": "^2.1.2",
@ -72,8 +73,6 @@
"safer-buffer": "^2.1.2",
"sass": "^1.53.0",
"sass-loader": "^12.6.0",
"terser-webpack-plugin": "^5.3.3",
"ts-loader": "^9.3.1",
"typescript": "^4.7.4",
"webpack": "^5.73.0",
"webpack-bundle-analyzer": "^4.5.0",

289
app/pnpm-lock.yaml generated
View file

@ -19,6 +19,7 @@ specifiers:
electron-builder: ^23.3.3
electron-fetch: ^1.7.4
encoding: ^0.1.13
esbuild-loader: ^3.0.1
eslint: ^8.19.0
file-loader: ^6.2.0
html-loader: ^2.1.2
@ -30,8 +31,6 @@ specifiers:
safer-buffer: ^2.1.2
sass: ^1.53.0
sass-loader: ^12.6.0
terser-webpack-plugin: ^5.3.3
ts-loader: ^9.3.1
typescript: ^4.7.4
webpack: ^5.73.0
webpack-bundle-analyzer: ^4.5.0
@ -58,6 +57,7 @@ devDependencies:
electron: 21.4.2
electron-builder: 23.3.3
encoding: 0.1.13
esbuild-loader: 3.0.1_webpack@5.73.0
eslint: 8.19.0
file-loader: 6.2.0_webpack@5.73.0
html-loader: 2.1.2_webpack@5.73.0
@ -69,8 +69,6 @@ devDependencies:
safer-buffer: 2.1.2
sass: 1.53.0
sass-loader: 12.6.0_sass@1.53.0+webpack@5.73.0
terser-webpack-plugin: 5.3.3_webpack@5.73.0
ts-loader: 9.3.1_3o2jfq6vfqxns3sz6wn2nnc3ei
typescript: 4.7.4
webpack: 5.73.0_webpack-cli@4.10.0
webpack-bundle-analyzer: 4.5.0
@ -1295,6 +1293,204 @@ packages:
- supports-color
dev: true
/@esbuild/android-arm/0.17.10:
resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm64/0.17.10:
resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-x64/0.17.10:
resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-arm64/0.17.10:
resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-x64/0.17.10:
resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-arm64/0.17.10:
resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-x64/0.17.10:
resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm/0.17.10:
resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm64/0.17.10:
resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ia32/0.17.10:
resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-loong64/0.17.10:
resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-mips64el/0.17.10:
resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ppc64/0.17.10:
resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-riscv64/0.17.10:
resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-s390x/0.17.10:
resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-x64/0.17.10:
resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/netbsd-x64/0.17.10:
resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/openbsd-x64/0.17.10:
resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/sunos-x64/0.17.10:
resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-arm64/0.17.10:
resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-ia32/0.17.10:
resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-x64/0.17.10:
resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@eslint/eslintrc/1.3.0:
resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -2376,6 +2572,7 @@ packages:
/color-convert/2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
requiresBuild: true
dependencies:
color-name: 1.1.4
dev: true
@ -2386,6 +2583,7 @@ packages:
/color-name/1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
requiresBuild: true
dev: true
/colorette/2.0.19:
@ -2828,6 +3026,7 @@ packages:
/emoji-regex/8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
requiresBuild: true
dev: true
/emojis-list/3.0.0:
@ -2880,6 +3079,48 @@ packages:
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
optional: true
/esbuild-loader/3.0.1_webpack@5.73.0:
resolution: {integrity: sha512-aZfGybqTeuyCd4AsVvWOOfkhIuN+wfZFjMyh3gyQEU1Uvsl8L6vye9HqP93iRa0iTA+6Jclap514PJIC3cLnMA==}
peerDependencies:
webpack: ^4.40.0 || ^5.0.0
dependencies:
esbuild: 0.17.10
get-tsconfig: 4.4.0
loader-utils: 2.0.4
webpack: 5.73.0_webpack-cli@4.10.0
webpack-sources: 1.4.3
dev: true
/esbuild/0.17.10:
resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/android-arm': 0.17.10
'@esbuild/android-arm64': 0.17.10
'@esbuild/android-x64': 0.17.10
'@esbuild/darwin-arm64': 0.17.10
'@esbuild/darwin-x64': 0.17.10
'@esbuild/freebsd-arm64': 0.17.10
'@esbuild/freebsd-x64': 0.17.10
'@esbuild/linux-arm': 0.17.10
'@esbuild/linux-arm64': 0.17.10
'@esbuild/linux-ia32': 0.17.10
'@esbuild/linux-loong64': 0.17.10
'@esbuild/linux-mips64el': 0.17.10
'@esbuild/linux-ppc64': 0.17.10
'@esbuild/linux-riscv64': 0.17.10
'@esbuild/linux-s390x': 0.17.10
'@esbuild/linux-x64': 0.17.10
'@esbuild/netbsd-x64': 0.17.10
'@esbuild/openbsd-x64': 0.17.10
'@esbuild/sunos-x64': 0.17.10
'@esbuild/win32-arm64': 0.17.10
'@esbuild/win32-ia32': 0.17.10
'@esbuild/win32-x64': 0.17.10
dev: true
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@ -3231,6 +3472,10 @@ packages:
dependencies:
pump: 3.0.0
/get-tsconfig/4.4.0:
resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==}
dev: true
/glob-parent/5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@ -3626,6 +3871,7 @@ packages:
/is-fullwidth-code-point/3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
requiresBuild: true
dev: true
/is-glob/4.0.3:
@ -3862,6 +4108,15 @@ packages:
json5: 2.2.1
dev: true
/loader-utils/2.0.4:
resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
engines: {node: '>=8.9.0'}
dependencies:
big.js: 5.2.2
emojis-list: 3.0.0
json5: 2.2.1
dev: true
/locate-path/5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@ -4736,6 +4991,10 @@ packages:
dev: true
optional: true
/source-list-map/2.0.1:
resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==}
dev: true
/source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@ -4936,21 +5195,6 @@ packages:
utf8-byte-length: 1.0.4
dev: true
/ts-loader/9.3.1_3o2jfq6vfqxns3sz6wn2nnc3ei:
resolution: {integrity: sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==}
engines: {node: '>=12.0.0'}
peerDependencies:
typescript: '*'
webpack: ^5.0.0
dependencies:
chalk: 4.1.2
enhanced-resolve: 5.10.0
micromatch: 4.0.5
semver: 7.3.7
typescript: 4.7.4
webpack: 5.73.0_webpack-cli@4.10.0
dev: true
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
@ -5183,6 +5427,13 @@ packages:
wildcard: 2.0.0
dev: true
/webpack-sources/1.4.3:
resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==}
dependencies:
source-list-map: 2.0.1
source-map: 0.6.1
dev: true
/webpack-sources/3.2.3:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}

View file

@ -3,7 +3,7 @@ const webpack = require("webpack");
const pkg = require("./package.json");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { EsbuildPlugin } = require("esbuild-loader");
module.exports = (env, argv) => {
return {
@ -24,14 +24,7 @@ module.exports = (env, argv) => {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: false,
},
},
extractComments: false,
}),
new EsbuildPlugin(),
],
},
resolve: {
@ -47,7 +40,11 @@ module.exports = (env, argv) => {
include: [path.resolve(__dirname, "src")],
use: [
{
loader: "ts-loader",
loader: "esbuild-loader",
options: {
minify: false,
keepNames: true,
},
},
{
loader: "ifdef-loader",

View file

@ -4,7 +4,7 @@ const pkg = require("./package.json");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const { EsbuildPlugin } = require("esbuild-loader");
module.exports = (env, argv) => {
return {
@ -27,14 +27,7 @@ module.exports = (env, argv) => {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: false,
},
},
extractComments: false,
}),
new EsbuildPlugin(),
],
},
module: {
@ -54,7 +47,11 @@ module.exports = (env, argv) => {
include: [path.resolve(__dirname, "src")],
use: [
{
loader: "ts-loader",
loader: "esbuild-loader",
options: {
minify: false,
keepNames: true,
},
},
{
loader: "ifdef-loader", options: {

View file

@ -5,7 +5,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { EsbuildPlugin } = require("esbuild-loader");
module.exports = (env, argv) => {
return {
@ -23,14 +23,7 @@ module.exports = (env, argv) => {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: false,
},
},
extractComments: false,
}),
new EsbuildPlugin(),
],
},
resolve: {
@ -74,7 +67,11 @@ module.exports = (env, argv) => {
include: [path.resolve(__dirname, "src")],
use: [
{
loader: "ts-loader",
loader: "esbuild-loader",
options: {
minify: false,
keepNames: true,
},
},
{
loader: "ifdef-loader",

View file

@ -4,7 +4,7 @@ const pkg = require("./package.json");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { EsbuildPlugin } = require("esbuild-loader");
module.exports = (env, argv) => {
return {
@ -25,14 +25,7 @@ module.exports = (env, argv) => {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: false,
},
},
extractComments: false,
}),
new EsbuildPlugin(),
],
},
resolve: {
@ -48,7 +41,11 @@ module.exports = (env, argv) => {
include: [path.resolve(__dirname, "src")],
use: [
{
loader: "ts-loader",
loader: "esbuild-loader",
options: {
minify: false,
keepNames: true,
},
},
{
loader: "ifdef-loader",

View file

@ -5,7 +5,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
const TerserPlugin = require("terser-webpack-plugin");
const { EsbuildPlugin } = require("esbuild-loader");
module.exports = (env, argv) => {
return {
@ -23,14 +23,7 @@ module.exports = (env, argv) => {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
format: {
comments: false,
},
},
extractComments: false,
}),
new EsbuildPlugin(),
],
},
resolve: {
@ -55,7 +48,11 @@ module.exports = (env, argv) => {
include: [path.resolve(__dirname, "src")],
use: [
{
loader: "ts-loader",
loader: "esbuild-loader",
options: {
minify: false,
keepNames: true,
},
},
{
loader: "ifdef-loader",