Electron Forge で必要なファイルだけ zip に含める設定
Electron Forge で MakerZIP
を使ってパッケージングしたとき、必要なファイルだけを含める設定について。
Electron Forge の vite-typescript
テンプレートでアプリケーションを作って MakerZIP
を使ってパッケージングしたとき、何も設定をいじらないと resources/app の中に node_modules や元のソースコードなど一式全部が含まれてしまう。
調べたところ、画像等を使っていない場合に最低限 zip に含めるべきソースコードは
- .vite ディレクトリ
- package.json
- index.html
だけなので、forge.config.ts に packageConfig.ignore
を指定して不要なファイルを含めないようにしないと zip の展開に時間がかかりすぎる。
import { MakerZIP } from "@electron-forge/maker-zip";
import { VitePlugin } from "@electron-forge/plugin-vite";
import type { ForgeConfig } from "@electron-forge/shared-types";
const config: ForgeConfig = {
packagerConfig: {
ignore: [
/(\.eslint.*|\.gitignore|\.prettier.*|vite\..*\.ts)/,
".vscode",
"node_modules",
"src",
"forge.config.ts",
"package-lock.json",
"tsconfig.json",
],
},
rebuildConfig: {},
makers: [new MakerZIP({}, ["win32", "darwin", "linux"])],
plugins: [
new VitePlugin({
// `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
// If you are familiar with Vite configuration, it will look really familiar.
build: [
{
// `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
entry: "src/main.ts",
config: "vite.main.config.ts",
},
{
entry: "src/preload.ts",
config: "vite.preload.config.ts",
},
],
renderer: [
{
name: "main_window",
config: "vite.renderer.config.ts",
},
],
}),
],
};
export default config;
packageConfig.ignore
は正規表現を受け付けるのでもっとうまく書けそうなのだが、私の正規表現スキルが不足していて愚直に不要なファイルをリストアップすることになった。
以上