electron-forge 默认配置不能 tree-shaking, 如果在使用第三方库时,可能会错误的引入整个入口文件,导致应用启动极慢。
目前我所知道有两种 tree-shaking 方法
- webpack tree-shaking
- babel-plugin-import 按需导入
本文讨论 webpack tree-shaking 实现
webpack tree-shaking 需要模块为 es6
语法(import
/export
),但 electron-forge 默认模板的 ts 配置会把 ESModule 转译为 commonJS,导致 webpack tree-shaking 无效。
那么问题就很简单了,只需要调整 ts-loader
配置,让其输出 esmodule 即可,配置如下:
{
test: /\.tsx?$/,
exclude: /(node_modules|\.webpack)/,
use: {
loader: "ts-loader",
options: {
transpileOnly: true,
compilerOptions: {
module: "es6", // <- HERE
},
},
},
},
至于为什么不直接修改 tsconfig.json
, 这个我尝试过,会无法启动,等有空再研究一下。