@electron-forge/plugin-vite 7.10.1 → 8.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Config.d.ts +45 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +3 -0
- package/dist/ViteConfig.d.ts +15 -0
- package/dist/ViteConfig.d.ts.map +1 -0
- package/dist/ViteConfig.js +72 -0
- package/dist/VitePlugin.d.ts +36 -0
- package/dist/VitePlugin.d.ts.map +1 -0
- package/dist/VitePlugin.js +350 -0
- package/dist/config/vite.base.config.d.ts +11 -0
- package/dist/config/vite.base.config.d.ts.map +1 -0
- package/dist/config/vite.base.config.js +101 -0
- package/dist/config/vite.main.config.d.ts +3 -0
- package/dist/config/vite.main.config.d.ts.map +1 -0
- package/dist/config/vite.main.config.js +35 -0
- package/dist/config/vite.preload.config.d.ts +3 -0
- package/dist/config/vite.preload.config.d.ts.map +1 -0
- package/dist/config/vite.preload.config.js +31 -0
- package/dist/config/vite.renderer.config.d.ts +3 -0
- package/dist/config/vite.renderer.config.d.ts.map +1 -0
- package/dist/config/vite.renderer.config.js +27 -0
- package/package.json +4 -4
package/dist/Config.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { LibraryOptions } from 'vite';
|
|
2
|
+
export interface VitePluginBuildConfig {
|
|
3
|
+
/**
|
|
4
|
+
* Alias of `build.lib.entry` in `config`.
|
|
5
|
+
*/
|
|
6
|
+
entry: LibraryOptions['entry'];
|
|
7
|
+
/**
|
|
8
|
+
* Vite config file path.
|
|
9
|
+
*/
|
|
10
|
+
config: string;
|
|
11
|
+
/**
|
|
12
|
+
* The build target is main process or preload script.
|
|
13
|
+
* @defaultValue 'main'
|
|
14
|
+
*/
|
|
15
|
+
target?: 'main' | 'preload';
|
|
16
|
+
}
|
|
17
|
+
export interface VitePluginRendererConfig {
|
|
18
|
+
/**
|
|
19
|
+
* Human friendly name of your entry point.
|
|
20
|
+
*/
|
|
21
|
+
name: string;
|
|
22
|
+
/**
|
|
23
|
+
* Vite config file path.
|
|
24
|
+
*/
|
|
25
|
+
config: string;
|
|
26
|
+
}
|
|
27
|
+
export interface VitePluginConfig {
|
|
28
|
+
/**
|
|
29
|
+
* Build anything such as Main process, Preload scripts and Worker process, etc.
|
|
30
|
+
*/
|
|
31
|
+
build: VitePluginBuildConfig[];
|
|
32
|
+
/**
|
|
33
|
+
* Renderer process Vite configs.
|
|
34
|
+
*/
|
|
35
|
+
renderer: VitePluginRendererConfig[];
|
|
36
|
+
/**
|
|
37
|
+
* Run builds concurrently. If a boolean is provided, targets specified in the {@link build} and {@link renderer}
|
|
38
|
+
* configurations will be run concurrently. If a number is provided, it will limit the number of concurrent builds.
|
|
39
|
+
*
|
|
40
|
+
* Limit concurrency if you are running into memory constraints when packaging.
|
|
41
|
+
* @defaultValue `true`
|
|
42
|
+
*/
|
|
43
|
+
concurrent?: boolean | number;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAK/B;;OAEG;IACH,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B;;OAEG;IACH,QAAQ,EAAE,wBAAwB,EAAE,CAAC;IAErC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B"}
|
package/dist/Config.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { VitePluginBuildConfig, VitePluginConfig, VitePluginRendererConfig } from './Config';
|
|
2
|
+
import type { UserConfig } from 'vite';
|
|
3
|
+
type Target = NonNullable<VitePluginBuildConfig['target']> | 'renderer';
|
|
4
|
+
export default class ViteConfigGenerator {
|
|
5
|
+
private readonly pluginConfig;
|
|
6
|
+
private readonly projectDir;
|
|
7
|
+
private readonly isProd;
|
|
8
|
+
constructor(pluginConfig: VitePluginConfig, projectDir: string, isProd: boolean);
|
|
9
|
+
resolveConfig(buildConfig: VitePluginBuildConfig | VitePluginRendererConfig, target: Target): Promise<UserConfig>;
|
|
10
|
+
get mode(): string;
|
|
11
|
+
getBuildConfigs(): Promise<UserConfig[]>;
|
|
12
|
+
getRendererConfig(): Promise<UserConfig[]>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=ViteConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViteConfig.d.ts","sourceRoot":"","sources":["../src/ViteConfig.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlD,KAAK,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO;IAK5B,aAAa,CACjB,WAAW,EAAE,qBAAqB,GAAG,wBAAwB,EAC7D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC;IAoCtB,IAAI,IAAI,IAAI,MAAM,CAKjB;IAEK,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAexC,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAYjD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const debug_1 = __importDefault(require("debug"));
|
|
7
|
+
const vite_1 = require("vite");
|
|
8
|
+
const vite_main_config_1 = require("./config/vite.main.config");
|
|
9
|
+
const vite_preload_config_1 = require("./config/vite.preload.config");
|
|
10
|
+
const vite_renderer_config_1 = require("./config/vite.renderer.config");
|
|
11
|
+
const d = (0, debug_1.default)('@electron-forge/plugin-vite:ViteConfig');
|
|
12
|
+
class ViteConfigGenerator {
|
|
13
|
+
constructor(pluginConfig, projectDir, isProd) {
|
|
14
|
+
this.pluginConfig = pluginConfig;
|
|
15
|
+
this.projectDir = projectDir;
|
|
16
|
+
this.isProd = isProd;
|
|
17
|
+
d('Config mode:', this.mode);
|
|
18
|
+
}
|
|
19
|
+
async resolveConfig(buildConfig, target) {
|
|
20
|
+
const configEnv = {
|
|
21
|
+
// @see - https://vitejs.dev/config/#conditional-config
|
|
22
|
+
command: this.isProd ? 'build' : 'serve',
|
|
23
|
+
// `mode` affects `.env.[mode]` file load.
|
|
24
|
+
mode: this.mode,
|
|
25
|
+
// Forge extension variables.
|
|
26
|
+
root: this.projectDir,
|
|
27
|
+
forgeConfig: this.pluginConfig,
|
|
28
|
+
forgeConfigSelf: buildConfig,
|
|
29
|
+
};
|
|
30
|
+
// `configEnv` is to be passed as an arguments when the user export a function in `vite.config.js`.
|
|
31
|
+
const userConfig = (await (0, vite_1.loadConfigFromFile)(configEnv, buildConfig.config))
|
|
32
|
+
?.config;
|
|
33
|
+
switch (target) {
|
|
34
|
+
case 'main':
|
|
35
|
+
return (0, vite_main_config_1.getConfig)(configEnv, userConfig);
|
|
36
|
+
case 'preload':
|
|
37
|
+
return (0, vite_preload_config_1.getConfig)(configEnv, userConfig);
|
|
38
|
+
case 'renderer':
|
|
39
|
+
return (0, vite_renderer_config_1.getConfig)(configEnv, userConfig);
|
|
40
|
+
default:
|
|
41
|
+
throw new Error(`Unknown target: ${target}, expected 'main', 'preload' or 'renderer'`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
get mode() {
|
|
45
|
+
// Vite's `mode` can be passed in via command.
|
|
46
|
+
// Since we are currently using the JavaScript API, we are opinionated defining two default values for mode here.
|
|
47
|
+
// The `mode` set by the end user in `vite.config.js` has a higher priority.
|
|
48
|
+
return this.isProd ? 'production' : 'development';
|
|
49
|
+
}
|
|
50
|
+
async getBuildConfigs() {
|
|
51
|
+
if (!Array.isArray(this.pluginConfig.build)) {
|
|
52
|
+
throw new Error('"config.build" must be an Array');
|
|
53
|
+
}
|
|
54
|
+
const configs = this.pluginConfig.build
|
|
55
|
+
// Prevent load the default `vite.config.js` file.
|
|
56
|
+
.filter(({ config }) => config)
|
|
57
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, buildConfig.target ?? 'main'));
|
|
58
|
+
return await Promise.all(configs);
|
|
59
|
+
}
|
|
60
|
+
async getRendererConfig() {
|
|
61
|
+
if (!Array.isArray(this.pluginConfig.renderer)) {
|
|
62
|
+
throw new Error('"config.renderer" must be an Array');
|
|
63
|
+
}
|
|
64
|
+
const configs = this.pluginConfig.renderer
|
|
65
|
+
// Prevent load the default `vite.config.js` file.
|
|
66
|
+
.filter(({ config }) => config)
|
|
67
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, 'renderer'));
|
|
68
|
+
return await Promise.all(configs);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.default = ViteConfigGenerator;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLCtCQUEwQztBQUUxQyxnRUFBMkU7QUFDM0Usc0VBQWlGO0FBQ2pGLHdFQUFtRjtBQVNuRixNQUFNLENBQUMsR0FBRyxJQUFBLGVBQUssRUFBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBSTFELE1BQXFCLG1CQUFtQjtJQUN0QyxZQUNtQixZQUE4QixFQUM5QixVQUFrQixFQUNsQixNQUFlO1FBRmYsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUVoQyxDQUFDLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsV0FBNkQsRUFDN0QsTUFBYztRQUVkLE1BQU0sU0FBUyxHQUFjO1lBQzNCLHVEQUF1RDtZQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3hDLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFFZiw2QkFBNkI7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3JCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixlQUFlLEVBQUUsV0FBVztTQUM3QixDQUFDO1FBRUYsbUdBQW1HO1FBQ25HLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFBLHlCQUFrQixFQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUUsRUFBRSxNQUFNLENBQUM7UUFDWCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxTQUErQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUEsK0JBQW9CLEVBQ3pCLFNBQStCLEVBQy9CLFVBQVUsQ0FDWCxDQUFDO1lBQ0osS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBQSxnQ0FBcUIsRUFDMUIsU0FBa0MsRUFDbEMsVUFBVSxDQUNYLENBQUM7WUFDSjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixNQUFNLDRDQUE0QyxDQUN0RSxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTiw4Q0FBOEM7UUFDOUMsaUhBQWlIO1FBQ2pILDRFQUE0RTtRQUM1RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDckMsa0RBQWtEO2FBQ2pELE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUM5QixHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUM5RCxDQUFDO1FBRUosT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRO1lBQ3hDLGtEQUFrRDthQUNqRCxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDOUIsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQWxGRCxzQ0FrRkMifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { PluginBase } from '@electron-forge/plugin-base';
|
|
2
|
+
import { Listr } from 'listr2';
|
|
3
|
+
import type { VitePluginConfig } from './Config';
|
|
4
|
+
import type { ForgeListrTask, ForgeMultiHookMap, ResolvedForgeConfig } from '@electron-forge/shared-types';
|
|
5
|
+
export default class VitePlugin extends PluginBase<VitePluginConfig> {
|
|
6
|
+
private static alreadyStarted;
|
|
7
|
+
name: string;
|
|
8
|
+
private isProd;
|
|
9
|
+
/**
|
|
10
|
+
* Path to the root of the Electron app
|
|
11
|
+
*/
|
|
12
|
+
private projectDir;
|
|
13
|
+
/**
|
|
14
|
+
* Path where Vite output is generated. Usually `${projectDir}/.vite`
|
|
15
|
+
*/
|
|
16
|
+
private baseDir;
|
|
17
|
+
private configGeneratorCache;
|
|
18
|
+
private watchers;
|
|
19
|
+
private servers;
|
|
20
|
+
private timeFormatter;
|
|
21
|
+
init: (dir: string) => void;
|
|
22
|
+
setDirectories(dir: string): void;
|
|
23
|
+
private get configGenerator();
|
|
24
|
+
getHooks: () => ForgeMultiHookMap;
|
|
25
|
+
resolveForgeConfig: (forgeConfig: ResolvedForgeConfig) => Promise<ResolvedForgeConfig>;
|
|
26
|
+
packageAfterCopy: (_forgeConfig: ResolvedForgeConfig, buildPath: string) => Promise<void>;
|
|
27
|
+
build: (task?: ForgeListrTask<null>) => Promise<Listr | void>;
|
|
28
|
+
buildRenderer: (task?: ForgeListrTask<null>) => Promise<Listr<NewCtx, any, any> | undefined>;
|
|
29
|
+
launchRendererDevServers: (task?: ForgeListrTask<null>) => Promise<Listr<NewCtx, any, any> | undefined>;
|
|
30
|
+
exitHandler: (options: {
|
|
31
|
+
cleanup?: boolean;
|
|
32
|
+
exit?: boolean;
|
|
33
|
+
}, err?: Error) => void;
|
|
34
|
+
}
|
|
35
|
+
export { VitePlugin };
|
|
36
|
+
//# sourceMappingURL=VitePlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VitePlugin.d.ts","sourceRoot":"","sources":["../src/VitePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAI9E,OAAO,EAAE,KAAK,EAAgB,MAAM,QAAQ,CAAC;AAK7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAKtC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IAE/B,IAAI,SAAU;IAErB,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAU;IAE5B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,QAAQ,CAAmC;IAEnD,OAAO,CAAC,OAAO,CAA4B;IAG3C,OAAO,CAAC,aAAa,CAIlB;IAEH,IAAI,QAAS,MAAM,KAAG,IAAI,CAUxB;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxC,OAAO,KAAK,eAAe,GAM1B;IAED,QAAQ,QAAO,iBAAiB,CAgF9B;IAEF,kBAAkB,gBACH,mBAAmB,KAC/B,QAAQ,mBAAmB,CAAC,CAwB7B;IAEF,gBAAgB,iBACA,mBAAmB,aACtB,MAAM,KAChB,QAAQ,IAAI,CAAC,CAgBd;IAGF,KAAK,UAAiB,eAAe,IAAI,CAAC,KAAG,QAAQ,KAAK,GAAG,IAAI,CAAC,CA8HhE;IAGF,aAAa,UAAiB,eAAe,IAAI,CAAC,kDAiBhD;IAEF,wBAAwB,UAAiB,eAAe,IAAI,CAAC,kDAoC3D;IAEF,WAAW,YACA;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,QACxC,KAAK,KACV,IAAI,CAiBL;CACH;AA2BD,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VitePlugin = void 0;
|
|
7
|
+
// TODO(erickzhao): Remove this when upgrading to Vite 6 and converting to ESM
|
|
8
|
+
process.env.VITE_CJS_IGNORE_WARNING = 'true';
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const plugin_base_1 = require("@electron-forge/plugin-base");
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const debug_1 = __importDefault(require("debug"));
|
|
13
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
14
|
+
const listr2_1 = require("listr2");
|
|
15
|
+
const vite_1 = __importDefault(require("vite"));
|
|
16
|
+
const ViteConfig_1 = __importDefault(require("./ViteConfig"));
|
|
17
|
+
const d = (0, debug_1.default)('electron-forge:plugin:vite');
|
|
18
|
+
class VitePlugin extends plugin_base_1.PluginBase {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.name = 'vite';
|
|
22
|
+
this.isProd = false;
|
|
23
|
+
this.watchers = [];
|
|
24
|
+
this.servers = [];
|
|
25
|
+
// Matches the format of the default Vite logger
|
|
26
|
+
this.timeFormatter = new Intl.DateTimeFormat(undefined, {
|
|
27
|
+
hour: 'numeric',
|
|
28
|
+
minute: 'numeric',
|
|
29
|
+
second: 'numeric',
|
|
30
|
+
});
|
|
31
|
+
this.init = (dir) => {
|
|
32
|
+
this.setDirectories(dir);
|
|
33
|
+
d('hooking process events');
|
|
34
|
+
process.on('exit', (_code) => {
|
|
35
|
+
this.exitHandler({ cleanup: true });
|
|
36
|
+
});
|
|
37
|
+
process.on('SIGINT', (_signal) => {
|
|
38
|
+
this.exitHandler({ exit: true });
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
this.getHooks = () => {
|
|
42
|
+
return {
|
|
43
|
+
preStart: [
|
|
44
|
+
(0, plugin_base_1.namedHookWithTaskFn)(async (task) => {
|
|
45
|
+
if (VitePlugin.alreadyStarted)
|
|
46
|
+
return;
|
|
47
|
+
VitePlugin.alreadyStarted = true;
|
|
48
|
+
d(`preStart: removing old content from ${this.baseDir}`);
|
|
49
|
+
await fs_extra_1.default.remove(this.baseDir);
|
|
50
|
+
return task?.newListr([
|
|
51
|
+
{
|
|
52
|
+
title: 'Launching Vite dev servers for renderer process code...',
|
|
53
|
+
task: async (_ctx, task) => {
|
|
54
|
+
const result = await this.launchRendererDevServers(task);
|
|
55
|
+
task.title =
|
|
56
|
+
'Launched Vite dev servers for renderer process code';
|
|
57
|
+
return result;
|
|
58
|
+
},
|
|
59
|
+
rendererOptions: {
|
|
60
|
+
persistentOutput: true,
|
|
61
|
+
timer: { ...listr2_1.PRESET_TIMER },
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
// The main process depends on the `server.port` of the renderer process, so the renderer process is run first.
|
|
65
|
+
{
|
|
66
|
+
title: 'Building main process and preload bundles...',
|
|
67
|
+
task: async (_ctx, task) => {
|
|
68
|
+
const result = await this.build(task);
|
|
69
|
+
task.title = 'Built main process and preload bundles';
|
|
70
|
+
return result;
|
|
71
|
+
},
|
|
72
|
+
rendererOptions: {
|
|
73
|
+
persistentOutput: true,
|
|
74
|
+
timer: { ...listr2_1.PRESET_TIMER },
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
], { concurrent: false });
|
|
78
|
+
}, 'Preparing Vite bundles'),
|
|
79
|
+
],
|
|
80
|
+
prePackage: [
|
|
81
|
+
(0, plugin_base_1.namedHookWithTaskFn)(async (task) => {
|
|
82
|
+
this.isProd = true;
|
|
83
|
+
await fs_extra_1.default.remove(this.baseDir);
|
|
84
|
+
return task?.newListr([
|
|
85
|
+
{
|
|
86
|
+
title: 'Building main and preload targets...',
|
|
87
|
+
task: async (_ctx, subtask) => {
|
|
88
|
+
const results = await this.build(subtask);
|
|
89
|
+
return results;
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
title: 'Building renderer targets...',
|
|
94
|
+
task: async (_ctx, subtask) => {
|
|
95
|
+
const results = await this.buildRenderer(subtask);
|
|
96
|
+
return results;
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
], { concurrent: true });
|
|
100
|
+
}, 'Building production Vite bundles'),
|
|
101
|
+
],
|
|
102
|
+
postStart: async (_config, child) => {
|
|
103
|
+
d('hooking electron process exit');
|
|
104
|
+
child.on('exit', () => {
|
|
105
|
+
if (child.restarted)
|
|
106
|
+
return;
|
|
107
|
+
this.exitHandler({ cleanup: true, exit: true });
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
resolveForgeConfig: this.resolveForgeConfig,
|
|
111
|
+
packageAfterCopy: this.packageAfterCopy,
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
this.resolveForgeConfig = async (forgeConfig) => {
|
|
115
|
+
forgeConfig.packagerConfig ??= {};
|
|
116
|
+
if (forgeConfig.packagerConfig.ignore) {
|
|
117
|
+
if (typeof forgeConfig.packagerConfig.ignore !== 'function') {
|
|
118
|
+
console.error(chalk_1.default.yellow(`You have set packagerConfig.ignore, the Electron Forge Vite plugin normally sets this automatically.
|
|
119
|
+
|
|
120
|
+
Your packaged app may be larger than expected if you dont ignore everything other than the '.vite' folder`));
|
|
121
|
+
}
|
|
122
|
+
return forgeConfig;
|
|
123
|
+
}
|
|
124
|
+
forgeConfig.packagerConfig.ignore = (file) => {
|
|
125
|
+
if (!file)
|
|
126
|
+
return false;
|
|
127
|
+
// `file` always starts with `/`
|
|
128
|
+
// @see - https://github.com/electron/packager/blob/v18.1.3/src/copy-filter.ts#L89-L93
|
|
129
|
+
// Collect the files built by Vite
|
|
130
|
+
return !file.startsWith('/.vite');
|
|
131
|
+
};
|
|
132
|
+
return forgeConfig;
|
|
133
|
+
};
|
|
134
|
+
this.packageAfterCopy = async (_forgeConfig, buildPath) => {
|
|
135
|
+
const pj = await fs_extra_1.default.readJson(node_path_1.default.resolve(this.projectDir, 'package.json'));
|
|
136
|
+
if (!pj.main?.includes('.vite/')) {
|
|
137
|
+
throw new Error(`Electron Forge is configured to use the Vite plugin. The plugin expects the
|
|
138
|
+
"main" entry point in "package.json" to be ".vite/*" (where the plugin outputs
|
|
139
|
+
the generated files). Instead, it is ${JSON.stringify(pj.main)}.`);
|
|
140
|
+
}
|
|
141
|
+
if (pj.config) {
|
|
142
|
+
delete pj.config.forge;
|
|
143
|
+
}
|
|
144
|
+
await fs_extra_1.default.writeJson(node_path_1.default.resolve(buildPath, 'package.json'), pj, {
|
|
145
|
+
spaces: 2,
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
// Main process, Preload scripts and Worker process, etc.
|
|
149
|
+
this.build = async (task) => {
|
|
150
|
+
const configs = await this.configGenerator.getBuildConfigs();
|
|
151
|
+
/**
|
|
152
|
+
* Checks if the result of the Vite build is a Rollup watcher.
|
|
153
|
+
* This should happen iff we're running `electron-forge start`.
|
|
154
|
+
*/
|
|
155
|
+
const isRollupWatcher = (x) => x &&
|
|
156
|
+
typeof x === 'object' &&
|
|
157
|
+
'on' in x &&
|
|
158
|
+
typeof x.on === 'function' &&
|
|
159
|
+
'close' in x &&
|
|
160
|
+
typeof x.close === 'function';
|
|
161
|
+
/**
|
|
162
|
+
* Rollup's `input` can be a string, an array of strings, or an object.
|
|
163
|
+
* This function converts the input to a string for the Forge CLI to consume.
|
|
164
|
+
*
|
|
165
|
+
* @see https://rollupjs.org/configuration-options/#input
|
|
166
|
+
*/
|
|
167
|
+
const parseInputOptionToString = (input) => {
|
|
168
|
+
if (typeof input === 'string') {
|
|
169
|
+
return input;
|
|
170
|
+
}
|
|
171
|
+
else if (Array.isArray(input)) {
|
|
172
|
+
return input.join(' ');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return Object.keys(input).join(' ');
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
return task?.newListr(configs.map((userConfig) => {
|
|
179
|
+
let target = '';
|
|
180
|
+
const input = userConfig.build?.rollupOptions?.input;
|
|
181
|
+
if (input) {
|
|
182
|
+
target = parseInputOptionToString(input);
|
|
183
|
+
}
|
|
184
|
+
else if (typeof userConfig.build?.lib !== 'boolean' &&
|
|
185
|
+
userConfig.build?.lib?.entry) {
|
|
186
|
+
target = parseInputOptionToString(userConfig.build.lib.entry);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
title: `Building ${chalk_1.default.green(target)} target`,
|
|
190
|
+
task: async (_ctx, subtask) => {
|
|
191
|
+
// We wrap this function in a Promise to ensure that the task is marked as completed
|
|
192
|
+
// only after all bundles are done generated. This is done in the `closeBundle` Rollup hook
|
|
193
|
+
// rather than when the `vite.build` promise resolves.
|
|
194
|
+
await new Promise((resolve, reject) => {
|
|
195
|
+
vite_1.default
|
|
196
|
+
.build({
|
|
197
|
+
// Avoid recursive builds caused by users configuring @electron-forge/plugin-vite in Vite config file.
|
|
198
|
+
configFile: false,
|
|
199
|
+
// We suppress Vite output and instead log lines using RollupWatcher events
|
|
200
|
+
logLevel: 'silent',
|
|
201
|
+
...userConfig,
|
|
202
|
+
plugins: [
|
|
203
|
+
// This plugin controls the output of the first-time Vite build that happens.
|
|
204
|
+
// `buildEnd` and `closeBundle` are Rollup output generation hooks.
|
|
205
|
+
// See https://rollupjs.org/plugin-development/#output-generation-hooks
|
|
206
|
+
{
|
|
207
|
+
name: '@electron-forge/plugin-vite:build-done',
|
|
208
|
+
buildEnd(err) {
|
|
209
|
+
if (err instanceof Error) {
|
|
210
|
+
d('buildEnd rollup hook called with error so build failed');
|
|
211
|
+
reject(err);
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
closeBundle() {
|
|
215
|
+
d('no error in buildEnd and reached closeBundle so build succeeded');
|
|
216
|
+
resolve();
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
...(userConfig.plugins ?? []),
|
|
220
|
+
],
|
|
221
|
+
clearScreen: false,
|
|
222
|
+
})
|
|
223
|
+
.then((result) => {
|
|
224
|
+
// When running `start` and enabling watch mode in Vite, the Rollup watcher
|
|
225
|
+
// emits events for subsequent builds.
|
|
226
|
+
if (isRollupWatcher(result)) {
|
|
227
|
+
result.on('event', (event) => {
|
|
228
|
+
if (event.code === 'ERROR' &&
|
|
229
|
+
userConfig.logLevel !== 'silent') {
|
|
230
|
+
console.error(`\n${chalk_1.default.dim(this.timeFormatter.format(new Date()))} ${event.error.message}`);
|
|
231
|
+
}
|
|
232
|
+
else if (event.code === 'BUNDLE_END' &&
|
|
233
|
+
(!userConfig.logLevel || userConfig.logLevel === 'info')) {
|
|
234
|
+
console.log(`${chalk_1.default.dim(this.timeFormatter.format(new Date()))} ${chalk_1.default.cyan.bold('[@electron-forge/plugin-vite]')} ${chalk_1.default.green('target built')} ${chalk_1.default.dim(target)}`);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
this.watchers.push(result);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
subtask.title = `Built target ${chalk_1.default.dim(target)}`;
|
|
241
|
+
}
|
|
242
|
+
return result;
|
|
243
|
+
})
|
|
244
|
+
.catch(reject);
|
|
245
|
+
});
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}), {
|
|
249
|
+
concurrent: this.config.concurrent ?? true,
|
|
250
|
+
exitOnError: this.isProd,
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
// Renderer process
|
|
254
|
+
this.buildRenderer = async (task) => {
|
|
255
|
+
const rendererConfigs = await this.configGenerator.getRendererConfig();
|
|
256
|
+
return task?.newListr(rendererConfigs.map((userConfig) => ({
|
|
257
|
+
task: async (_ctx, subtask) => {
|
|
258
|
+
await vite_1.default.build({
|
|
259
|
+
configFile: false,
|
|
260
|
+
logLevel: 'error',
|
|
261
|
+
...userConfig,
|
|
262
|
+
});
|
|
263
|
+
subtask.title = `Built target ${chalk_1.default.dim(node_path_1.default.basename(userConfig.build?.outDir ?? ''))}`;
|
|
264
|
+
},
|
|
265
|
+
})), {
|
|
266
|
+
concurrent: this.config.concurrent ?? true,
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
this.launchRendererDevServers = async (task) => {
|
|
270
|
+
const rendererConfigs = await this.configGenerator.getRendererConfig();
|
|
271
|
+
return task?.newListr(rendererConfigs.map((userConfig) => ({
|
|
272
|
+
title: `Target ${chalk_1.default.cyan(node_path_1.default.basename(userConfig.build?.outDir ?? ''))}`,
|
|
273
|
+
task: async (_ctx, subtask) => {
|
|
274
|
+
const viteDevServer = await vite_1.default.createServer({
|
|
275
|
+
configFile: false,
|
|
276
|
+
...userConfig,
|
|
277
|
+
});
|
|
278
|
+
await viteDevServer.listen();
|
|
279
|
+
const urls = getServerURLs(viteDevServer.resolvedUrls);
|
|
280
|
+
subtask.output = urls;
|
|
281
|
+
this.servers.push(viteDevServer);
|
|
282
|
+
if (viteDevServer.httpServer) {
|
|
283
|
+
// Make sure that `getDefines` in VitePlugin.ts gets the correct `server.port`. (#3198)
|
|
284
|
+
const addressInfo = viteDevServer.httpServer.address();
|
|
285
|
+
const isAddressInfo = (x) => typeof x === 'object' ? typeof x?.address === 'string' : false;
|
|
286
|
+
if (isAddressInfo(addressInfo)) {
|
|
287
|
+
userConfig.server ??= {};
|
|
288
|
+
userConfig.server.port = addressInfo.port;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
rendererOptions: {
|
|
293
|
+
persistentOutput: true,
|
|
294
|
+
},
|
|
295
|
+
})));
|
|
296
|
+
};
|
|
297
|
+
this.exitHandler = (options, err) => {
|
|
298
|
+
d('handling process exit with:', options);
|
|
299
|
+
if (options.cleanup) {
|
|
300
|
+
for (const watcher of this.watchers) {
|
|
301
|
+
d('cleaning vite watcher');
|
|
302
|
+
watcher.close();
|
|
303
|
+
}
|
|
304
|
+
this.watchers = [];
|
|
305
|
+
for (const server of this.servers) {
|
|
306
|
+
d('cleaning http server');
|
|
307
|
+
server.close();
|
|
308
|
+
}
|
|
309
|
+
this.servers = [];
|
|
310
|
+
}
|
|
311
|
+
if (err)
|
|
312
|
+
console.error(err.stack);
|
|
313
|
+
if (options.exit)
|
|
314
|
+
process.exit(0);
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
setDirectories(dir) {
|
|
318
|
+
this.projectDir = dir;
|
|
319
|
+
this.baseDir = node_path_1.default.join(dir, '.vite');
|
|
320
|
+
}
|
|
321
|
+
get configGenerator() {
|
|
322
|
+
return (this.configGeneratorCache ??= new ViteConfig_1.default(this.config, this.projectDir, this.isProd));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.VitePlugin = VitePlugin;
|
|
326
|
+
VitePlugin.alreadyStarted = false;
|
|
327
|
+
exports.default = VitePlugin;
|
|
328
|
+
/**
|
|
329
|
+
* Get a string for Vite's printServerUrls function without actually printing it.
|
|
330
|
+
* Allows us to set `task.output` to that value without having to pass a custom logger into Vite.
|
|
331
|
+
* @see https://github.com/vitejs/vite/blob/42233d39674be808a6a1a79f1a6e44ed23ba0d61/packages/vite/src/node/logger.ts#L168-L188
|
|
332
|
+
*/
|
|
333
|
+
function getServerURLs(urls) {
|
|
334
|
+
let output = '';
|
|
335
|
+
const colorUrl = (url) => chalk_1.default.cyan(url.replace(/:(\d+)\//, (_, port) => `:${chalk_1.default.bold(port)}/`));
|
|
336
|
+
for (const url of urls.local) {
|
|
337
|
+
output += ` ${chalk_1.default.green('➜')} ${chalk_1.default.bold('Local')}: ${colorUrl(url)}`;
|
|
338
|
+
}
|
|
339
|
+
for (const url of urls.network) {
|
|
340
|
+
output += ` \n${chalk_1.default.green('➜')} ${chalk_1.default.bold('Network')}: ${colorUrl(url)}`;
|
|
341
|
+
}
|
|
342
|
+
if (urls.network.length === 0) {
|
|
343
|
+
output +=
|
|
344
|
+
chalk_1.default.dim(` \n${chalk_1.default.green('➜')} ${chalk_1.default.bold('Network')}: use `) +
|
|
345
|
+
chalk_1.default.bold('--host') +
|
|
346
|
+
chalk_1.default.dim(' to expose');
|
|
347
|
+
}
|
|
348
|
+
return output;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhFQUE4RTtBQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztBQUU3QywwREFBNkI7QUFFN0IsNkRBQThFO0FBQzlFLGtEQUEwQjtBQUMxQixrREFBMEI7QUFDMUIsd0RBQTBCO0FBQzFCLG1DQUE2QztBQUM3QyxnREFBdUM7QUFFdkMsOERBQStDO0FBVS9DLE1BQU0sQ0FBQyxHQUFHLElBQUEsZUFBSyxFQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFOUMsTUFBcUIsVUFBVyxTQUFRLHdCQUE0QjtJQUFwRTs7UUFHUyxTQUFJLEdBQUcsTUFBTSxDQUFDO1FBRWIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQWNmLGFBQVEsR0FBZ0MsRUFBRSxDQUFDO1FBRTNDLFlBQU8sR0FBeUIsRUFBRSxDQUFDO1FBRTNDLGdEQUFnRDtRQUN4QyxrQkFBYSxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7WUFDekQsSUFBSSxFQUFFLFNBQVM7WUFDZixNQUFNLEVBQUUsU0FBUztZQUNqQixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUM7UUFFSCxTQUFJLEdBQUcsQ0FBQyxHQUFXLEVBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBMEIsRUFBRSxD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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ConfigEnv, Plugin, UserConfig } from 'vite';
|
|
2
|
+
export declare const builtins: string[];
|
|
3
|
+
export declare const external: string[];
|
|
4
|
+
export declare function getBuildConfig(env: ConfigEnv<'build'>): UserConfig;
|
|
5
|
+
export declare function getDefineKeys(names: string[]): {
|
|
6
|
+
[name: string]: VitePluginRuntimeKeys;
|
|
7
|
+
};
|
|
8
|
+
export declare function getBuildDefine(env: ConfigEnv<'build'>): Record<string, any>;
|
|
9
|
+
export declare function pluginExposeRenderer(name: string): Plugin;
|
|
10
|
+
export declare function pluginHotRestart(command: 'reload' | 'restart'): Plugin;
|
|
11
|
+
//# sourceMappingURL=vite.base.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.base.config.d.ts","sourceRoot":"","sources":["../../src/config/vite.base.config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAiB,MAAM,MAAM,CAAC;AAEzE,eAAO,MAAM,QAAQ,UAIpB,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAgB,CAAC;AAMtC,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,UAAU,CAgBlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;;EAe5C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,uBAsBrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAiBtE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pluginHotRestart = exports.pluginExposeRenderer = exports.getBuildDefine = exports.getDefineKeys = exports.getBuildConfig = exports.external = exports.builtins = void 0;
|
|
4
|
+
const node_module_1 = require("node:module");
|
|
5
|
+
exports.builtins = [
|
|
6
|
+
'electron',
|
|
7
|
+
'electron/common',
|
|
8
|
+
...node_module_1.builtinModules.map((m) => [m, `node:${m}`]).flat(),
|
|
9
|
+
];
|
|
10
|
+
exports.external = [...exports.builtins];
|
|
11
|
+
// Used for hot reload after preload scripts.
|
|
12
|
+
const viteDevServers = {};
|
|
13
|
+
const viteDevServerUrls = {};
|
|
14
|
+
function getBuildConfig(env) {
|
|
15
|
+
const { root, mode, command } = env;
|
|
16
|
+
return {
|
|
17
|
+
root,
|
|
18
|
+
mode,
|
|
19
|
+
build: {
|
|
20
|
+
// Prevent multiple builds from interfering with each other.
|
|
21
|
+
emptyOutDir: false,
|
|
22
|
+
// 🚧 Multiple builds may conflict.
|
|
23
|
+
outDir: '.vite/build',
|
|
24
|
+
watch: command === 'serve' ? {} : null,
|
|
25
|
+
minify: command === 'build',
|
|
26
|
+
},
|
|
27
|
+
clearScreen: false,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.getBuildConfig = getBuildConfig;
|
|
31
|
+
function getDefineKeys(names) {
|
|
32
|
+
const define = {};
|
|
33
|
+
// change name from kebab case to upper snake case to agree with vite:define plugin
|
|
34
|
+
// this allows the VitePluginRendererConfig entries to contain names with dashes
|
|
35
|
+
return names.reduce((acc, name) => {
|
|
36
|
+
const NAME = name.toUpperCase().replaceAll('-', '_');
|
|
37
|
+
const keys = {
|
|
38
|
+
VITE_DEV_SERVER_URL: `${NAME}_VITE_DEV_SERVER_URL`,
|
|
39
|
+
VITE_NAME: `${NAME}_VITE_NAME`,
|
|
40
|
+
};
|
|
41
|
+
return { ...acc, [name]: keys };
|
|
42
|
+
}, define);
|
|
43
|
+
}
|
|
44
|
+
exports.getDefineKeys = getDefineKeys;
|
|
45
|
+
function getBuildDefine(env) {
|
|
46
|
+
const { command, forgeConfig } = env;
|
|
47
|
+
const names = forgeConfig.renderer
|
|
48
|
+
.filter(({ name }) => name != null)
|
|
49
|
+
.map(({ name }) => name);
|
|
50
|
+
const defineKeys = getDefineKeys(names);
|
|
51
|
+
const define = Object.entries(defineKeys).reduce((acc, [name, keys]) => {
|
|
52
|
+
const { VITE_DEV_SERVER_URL, VITE_NAME } = keys;
|
|
53
|
+
const def = {
|
|
54
|
+
[VITE_DEV_SERVER_URL]: command === 'serve'
|
|
55
|
+
? JSON.stringify(viteDevServerUrls[VITE_DEV_SERVER_URL])
|
|
56
|
+
: undefined,
|
|
57
|
+
[VITE_NAME]: JSON.stringify(name),
|
|
58
|
+
};
|
|
59
|
+
return { ...acc, ...def };
|
|
60
|
+
}, {});
|
|
61
|
+
return define;
|
|
62
|
+
}
|
|
63
|
+
exports.getBuildDefine = getBuildDefine;
|
|
64
|
+
function pluginExposeRenderer(name) {
|
|
65
|
+
const { VITE_DEV_SERVER_URL } = getDefineKeys([name])[name];
|
|
66
|
+
return {
|
|
67
|
+
name: '@electron-forge/plugin-vite:expose-renderer',
|
|
68
|
+
configureServer(server) {
|
|
69
|
+
// Expose server for preload scripts hot reload.
|
|
70
|
+
viteDevServers[name] = server;
|
|
71
|
+
server.httpServer?.once('listening', () => {
|
|
72
|
+
const addressInfo = server.httpServer?.address();
|
|
73
|
+
// Expose env constant for main process use.
|
|
74
|
+
viteDevServerUrls[VITE_DEV_SERVER_URL] =
|
|
75
|
+
`http://localhost:${addressInfo?.port}`;
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
exports.pluginExposeRenderer = pluginExposeRenderer;
|
|
81
|
+
function pluginHotRestart(command) {
|
|
82
|
+
return {
|
|
83
|
+
name: '@electron-forge/plugin-vite:hot-restart',
|
|
84
|
+
closeBundle() {
|
|
85
|
+
if (command === 'reload') {
|
|
86
|
+
for (const server of Object.values(viteDevServers)) {
|
|
87
|
+
// Preload scripts hot reload.
|
|
88
|
+
server.ws.send({ type: 'full-reload' });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (command === 'restart') {
|
|
92
|
+
// Main process hot restart.
|
|
93
|
+
// https://github.com/electron/forge/blob/v7.2.0/packages/api/core/src/api/start.ts#L216-L223
|
|
94
|
+
// TODO: blocked in #3380
|
|
95
|
+
// process.stdin.emit('data', 'rs');
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
exports.pluginHotRestart = pluginHotRestart;
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5iYXNlLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5iYXNlLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkM7QUFLaEMsUUFBQSxRQUFRLEdBQUc7SUFDdEIsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixHQUFHLDRCQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7Q0FDdEQsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHLENBQUMsR0FBRyxnQkFBUSxDQUFDLENBQUM7QUFFdEMsNkNBQTZDO0FBQzdDLE1BQU0sY0FBYyxHQUFrQyxFQUFFLENBQUM7QUFDekQsTUFBTSxpQkFBaUIsR0FBMkIsRUFBRSxDQUFDO0FBRXJELFNBQWdCLGNBQWMsQ0FBQyxHQUF1QjtJQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFFcEMsT0FBTztRQUNMLElBQUk7UUFDSixJQUFJO1FBQ0osS0FBSyxFQUFFO1lBQ0wsNERBQTREO1lBQzVELFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG1DQUFtQztZQUNuQyxNQUFNLEVBQUUsYUFBYTtZQUNyQixLQUFLLEVBQUUsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3RDLE1BQU0sRUFBRSxPQUFPLEtBQUssT0FBTztTQUM1QjtRQUNELFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUM7QUFDSixDQUFDO0FBaEJELHdDQWdCQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFlO0lBQzNDLE1BQU0sTUFBTSxHQUE4QyxFQUFFLENBQUM7SUFFN0QsbUZBQW1GO0lBQ25GLGdGQUFnRjtJQUVoRixPQUFPLEtB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.main.config.d.ts","sourceRoot":"","sources":["../../src/config/vite.main.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AASpE,wBAAgB,SAAS,CACvB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAC5B,UAAU,GAAE,UAAe,GAC1B,UAAU,CA6BZ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConfig = void 0;
|
|
4
|
+
const vite_1 = require("vite");
|
|
5
|
+
const vite_base_config_1 = require("./vite.base.config");
|
|
6
|
+
function getConfig(forgeEnv, userConfig = {}) {
|
|
7
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const define = (0, vite_base_config_1.getBuildDefine)(forgeEnv);
|
|
9
|
+
const config = {
|
|
10
|
+
build: {
|
|
11
|
+
copyPublicDir: false,
|
|
12
|
+
rollupOptions: {
|
|
13
|
+
external: [...vite_base_config_1.external, 'electron/main'],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
plugins: [(0, vite_base_config_1.pluginHotRestart)('restart')],
|
|
17
|
+
define,
|
|
18
|
+
resolve: {
|
|
19
|
+
// Load the Node.js entry.
|
|
20
|
+
conditions: ['node'],
|
|
21
|
+
mainFields: ['module', 'jsnext:main', 'jsnext'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const buildConfig = (0, vite_base_config_1.getBuildConfig)(forgeEnv);
|
|
25
|
+
if (userConfig.build?.lib == null) {
|
|
26
|
+
config.build.lib = {
|
|
27
|
+
entry: forgeConfigSelf.entry,
|
|
28
|
+
fileName: () => '[name].js',
|
|
29
|
+
formats: ['cjs'],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return (0, vite_1.mergeConfig)((0, vite_1.mergeConfig)(buildConfig, config), userConfig);
|
|
33
|
+
}
|
|
34
|
+
exports.getConfig = getConfig;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5tYWluLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5tYWluLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0U7QUFFcEUseURBSzRCO0FBRTVCLFNBQWdCLFNBQVMsQ0FDdkIsUUFBNEIsRUFDNUIsYUFBeUIsRUFBRTtJQUUzQixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQWMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBZTtRQUN6QixLQUFLLEVBQUU7WUFDTCxhQUFhLEVBQUUsS0FBSztZQUNwQixhQUFhLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLENBQUMsR0FBRywyQkFBUSxFQUFFLGVBQWUsQ0FBQzthQUN6QztTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBQSxtQ0FBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxNQUFNO1FBQ04sT0FBTyxFQUFFO1lBQ1AsMEJBQTBCO1lBQzFCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNwQixVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQztTQUNoRDtLQUNGLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBRyxJQUFBLGlDQUFjLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0MsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsS0FBTSxDQUFDLEdBQUcsR0FBRztZQUNsQixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7WUFDNUIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVc7WUFDM0IsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFBLGtCQUFXLEVBQUMsSUFBQSxrQkFBVyxFQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBaENELDhCQWdDQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.preload.config.d.ts","sourceRoot":"","sources":["../../src/config/vite.preload.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAIpE,wBAAgB,SAAS,CACvB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAC5B,UAAU,GAAE,UAAe,GAC1B,UAAU,CAwBZ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConfig = void 0;
|
|
4
|
+
const vite_1 = require("vite");
|
|
5
|
+
const vite_base_config_1 = require("./vite.base.config");
|
|
6
|
+
function getConfig(forgeEnv, userConfig = {}) {
|
|
7
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const config = {
|
|
9
|
+
build: {
|
|
10
|
+
copyPublicDir: false,
|
|
11
|
+
rollupOptions: {
|
|
12
|
+
external: [...vite_base_config_1.external, 'electron/renderer'],
|
|
13
|
+
// Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.
|
|
14
|
+
input: forgeConfigSelf.entry,
|
|
15
|
+
output: {
|
|
16
|
+
format: 'cjs',
|
|
17
|
+
// It should not be split chunks.
|
|
18
|
+
inlineDynamicImports: true,
|
|
19
|
+
entryFileNames: '[name].js',
|
|
20
|
+
chunkFileNames: '[name].js',
|
|
21
|
+
assetFileNames: '[name].[ext]',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
plugins: [(0, vite_base_config_1.pluginHotRestart)('reload')],
|
|
26
|
+
};
|
|
27
|
+
const buildConfig = (0, vite_base_config_1.getBuildConfig)(forgeEnv);
|
|
28
|
+
return (0, vite_1.mergeConfig)((0, vite_1.mergeConfig)(buildConfig, config), userConfig);
|
|
29
|
+
}
|
|
30
|
+
exports.getConfig = getConfig;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5wcmVsb2FkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5wcmVsb2FkLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0U7QUFFcEUseURBQWdGO0FBRWhGLFNBQWdCLFNBQVMsQ0FDdkIsUUFBNEIsRUFDNUIsYUFBeUIsRUFBRTtJQUUzQixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFlO1FBQ3pCLEtBQUssRUFBRTtZQUNMLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsQ0FBQyxHQUFHLDJCQUFRLEVBQUUsbUJBQW1CLENBQUM7Z0JBQzVDLDRHQUE0RztnQkFDNUcsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO2dCQUM1QixNQUFNLEVBQUU7b0JBQ04sTUFBTSxFQUFFLEtBQUs7b0JBQ2IsaUNBQWlDO29CQUNqQyxvQkFBb0IsRUFBRSxJQUFJO29CQUMxQixjQUFjLEVBQUUsV0FBVztvQkFDM0IsY0FBYyxFQUFFLFdBQVc7b0JBQzNCLGNBQWMsRUFBRSxjQUFjO2lCQUMvQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFBLG1DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3RDLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBRyxJQUFBLGlDQUFjLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0MsT0FBTyxJQUFBLGtCQUFXLEVBQUMsSUFBQSxrQkFBVyxFQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBM0JELDhCQTJCQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.renderer.config.d.ts","sourceRoot":"","sources":["../../src/config/vite.renderer.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAKpE,wBAAgB,SAAS,CACvB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,EAC/B,UAAU,GAAE,UAAe,uBAqB5B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConfig = void 0;
|
|
4
|
+
const vite_1 = require("vite");
|
|
5
|
+
const vite_base_config_1 = require("./vite.base.config");
|
|
6
|
+
// https://vitejs.dev/config
|
|
7
|
+
function getConfig(forgeEnv, userConfig = {}) {
|
|
8
|
+
const { root, mode, forgeConfigSelf } = forgeEnv;
|
|
9
|
+
const name = forgeConfigSelf.name ?? '';
|
|
10
|
+
const config = {
|
|
11
|
+
root,
|
|
12
|
+
mode,
|
|
13
|
+
base: './',
|
|
14
|
+
build: {
|
|
15
|
+
copyPublicDir: true,
|
|
16
|
+
outDir: `.vite/renderer/${name}`,
|
|
17
|
+
},
|
|
18
|
+
plugins: [(0, vite_base_config_1.pluginExposeRenderer)(name)],
|
|
19
|
+
resolve: {
|
|
20
|
+
preserveSymlinks: true,
|
|
21
|
+
},
|
|
22
|
+
clearScreen: false,
|
|
23
|
+
};
|
|
24
|
+
return (0, vite_1.mergeConfig)(config, userConfig);
|
|
25
|
+
}
|
|
26
|
+
exports.getConfig = getConfig;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5yZW5kZXJlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3ZpdGUucmVuZGVyZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFvRTtBQUVwRSx5REFBMEQ7QUFFMUQsNEJBQTRCO0FBQzVCLFNBQWdCLFNBQVMsQ0FDdkIsUUFBK0IsRUFDL0IsYUFBeUIsRUFBRTtJQUUzQixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFFeEMsTUFBTSxNQUFNLEdBQWU7UUFDekIsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRTtZQUNMLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE1BQU0sRUFBRSxrQkFBa0IsSUFBSSxFQUFFO1NBQ2pDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBQSx1Q0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLEVBQUU7WUFDUCxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGLE9BQU8sSUFBQSxrQkFBVyxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBdkJELDhCQXVCQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@electron-forge/plugin-vite",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0-alpha.1",
|
|
4
4
|
"description": "Vite plugin for Electron Forge, lets you use Vite directly in your tooling",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"main": "dist/VitePlugin.js",
|
|
13
13
|
"typings": "dist/VitePlugin.d.ts",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@electron-forge/plugin-base": "
|
|
16
|
-
"@electron-forge/shared-types": "
|
|
15
|
+
"@electron-forge/plugin-base": "8.0.0-alpha.1",
|
|
16
|
+
"@electron-forge/shared-types": "8.0.0-alpha.1",
|
|
17
17
|
"chalk": "^4.0.0",
|
|
18
18
|
"debug": "^4.3.1",
|
|
19
19
|
"fs-extra": "^10.0.0",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"src",
|
|
40
40
|
"forge-vite-env.d.ts"
|
|
41
41
|
],
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "b9e0db1e38fafbeace24f539be01e32a4aeed258"
|
|
43
43
|
}
|