@electron-forge/plugin-vite 7.3.1 → 7.5.0
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/README.md +2 -0
- package/dist/Config.d.ts +7 -2
- package/dist/Config.d.ts.map +1 -1
- package/dist/ViteConfig.d.ts +4 -6
- package/dist/ViteConfig.d.ts.map +1 -1
- package/dist/ViteConfig.js +26 -13
- package/dist/VitePlugin.d.ts.map +1 -1
- package/dist/VitePlugin.js +10 -17
- 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 +90 -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 +31 -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 +29 -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 +24 -0
- package/dist/util/plugins.d.ts.map +1 -1
- package/dist/util/plugins.js +1 -1
- package/package.json +9 -8
- package/src/Config.ts +7 -3
- package/src/ViteConfig.ts +29 -14
- package/src/VitePlugin.ts +10 -17
- package/src/config/vite.base.config.ts +97 -0
- package/src/config/vite.main.config.ts +29 -0
- package/src/config/vite.preload.config.ts +27 -0
- package/src/config/vite.renderer.config.ts +23 -0
- package/src/util/plugins.ts +0 -1
- package/dist/util/package.d.ts +0 -14
- package/dist/util/package.d.ts.map +0 -1
- package/dist/util/package.js +0 -93
- package/src/util/package.ts +0 -108
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
## plugin-vite
|
|
2
2
|
|
|
3
|
+
_Note: This plugin is considered experimental and is under active development; we do not offer API stability guarantees as development continues. Minor versions may include breaking changes - see release notes for details on migration._
|
|
4
|
+
|
|
3
5
|
This plugin makes it easy to set up standard vite tooling to compile both your main process code and your renderer process code, with built-in support for Hot Module Replacement (HMR) in the renderer process and support for multiple renderers.
|
|
4
6
|
|
|
5
7
|
```javascript
|
package/dist/Config.d.ts
CHANGED
|
@@ -3,17 +3,22 @@ export interface VitePluginBuildConfig {
|
|
|
3
3
|
/**
|
|
4
4
|
* Alias of `build.lib.entry` in `config`.
|
|
5
5
|
*/
|
|
6
|
-
entry
|
|
6
|
+
entry: LibraryOptions['entry'];
|
|
7
7
|
/**
|
|
8
8
|
* Vite config file path.
|
|
9
9
|
*/
|
|
10
10
|
config: string;
|
|
11
|
+
/**
|
|
12
|
+
* The build target is main process or preload script.
|
|
13
|
+
* @defaultValue 'main'
|
|
14
|
+
*/
|
|
15
|
+
target?: 'main' | 'preload';
|
|
11
16
|
}
|
|
12
17
|
export interface VitePluginRendererConfig {
|
|
13
18
|
/**
|
|
14
19
|
* Human friendly name of your entry point.
|
|
15
20
|
*/
|
|
16
|
-
name
|
|
21
|
+
name: string;
|
|
17
22
|
/**
|
|
18
23
|
* Vite config file path.
|
|
19
24
|
*/
|
package/dist/Config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"
|
|
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;CACtC"}
|
package/dist/ViteConfig.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import type { VitePluginBuildConfig, VitePluginConfig, VitePluginRendererConfig } from './Config';
|
|
2
|
-
import type {
|
|
2
|
+
import type { UserConfig } from 'vite';
|
|
3
|
+
declare type Target = NonNullable<VitePluginBuildConfig['target']> | 'renderer';
|
|
3
4
|
export default class ViteConfigGenerator {
|
|
4
5
|
private readonly pluginConfig;
|
|
5
6
|
private readonly projectDir;
|
|
6
7
|
private readonly isProd;
|
|
7
8
|
constructor(pluginConfig: VitePluginConfig, projectDir: string, isProd: boolean);
|
|
8
|
-
resolveConfig(buildConfig: VitePluginBuildConfig | VitePluginRendererConfig,
|
|
9
|
-
path: string;
|
|
10
|
-
config: UserConfig;
|
|
11
|
-
dependencies: string[];
|
|
12
|
-
} | null>;
|
|
9
|
+
resolveConfig(buildConfig: VitePluginBuildConfig | VitePluginRendererConfig, target: Target): Promise<UserConfig>;
|
|
13
10
|
get mode(): string;
|
|
14
11
|
getBuildConfig(): Promise<UserConfig[]>;
|
|
15
12
|
getRendererConfig(): Promise<UserConfig[]>;
|
|
16
13
|
}
|
|
14
|
+
export {};
|
|
17
15
|
//# sourceMappingURL=ViteConfig.d.ts.map
|
package/dist/ViteConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViteConfig.d.ts","sourceRoot":"","sources":["../src/ViteConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ViteConfig.d.ts","sourceRoot":"","sources":["../src/ViteConfig.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlD,aAAK,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAoB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAA5F,YAAY,EAAE,gBAAgB,EAAmB,UAAU,EAAE,MAAM,EAAmB,MAAM,EAAE,OAAO;IAI5H,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,wBAAwB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BvH,IAAI,IAAI,IAAI,MAAM,CAKjB;IAEK,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAavC,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAYjD"}
|
package/dist/ViteConfig.js
CHANGED
|
@@ -4,8 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const debug_1 = __importDefault(require("debug"));
|
|
7
|
-
// eslint-disable-next-line node/no-unpublished-import
|
|
8
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");
|
|
9
11
|
const d = (0, debug_1.default)('@electron-forge/plugin-vite:ViteConfig');
|
|
10
12
|
class ViteConfigGenerator {
|
|
11
13
|
constructor(pluginConfig, projectDir, isProd) {
|
|
@@ -14,19 +16,29 @@ class ViteConfigGenerator {
|
|
|
14
16
|
this.isProd = isProd;
|
|
15
17
|
d('Config mode:', this.mode);
|
|
16
18
|
}
|
|
17
|
-
resolveConfig(buildConfig,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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.
|
|
24
26
|
root: this.projectDir,
|
|
25
27
|
forgeConfig: this.pluginConfig,
|
|
26
28
|
forgeConfigSelf: buildConfig,
|
|
27
|
-
}
|
|
29
|
+
};
|
|
28
30
|
// `configEnv` is to be passed as an arguments when the user export a function in `vite.config.js`.
|
|
29
|
-
|
|
31
|
+
const userConfig = (await (0, vite_1.loadConfigFromFile)(configEnv, buildConfig.config))?.config ?? {};
|
|
32
|
+
switch (target) {
|
|
33
|
+
case 'main':
|
|
34
|
+
return (0, vite_1.mergeConfig)((0, vite_main_config_1.getConfig)(configEnv), userConfig);
|
|
35
|
+
case 'preload':
|
|
36
|
+
return (0, vite_1.mergeConfig)((0, vite_preload_config_1.getConfig)(configEnv), userConfig);
|
|
37
|
+
case 'renderer':
|
|
38
|
+
return (0, vite_1.mergeConfig)((0, vite_renderer_config_1.getConfig)(configEnv), userConfig);
|
|
39
|
+
default:
|
|
40
|
+
throw new Error(`Unknown target: ${target}, expected 'main', 'preload' or 'renderer'`);
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
get mode() {
|
|
32
44
|
// Vite's `mode` can be passed in via command.
|
|
@@ -41,7 +53,7 @@ class ViteConfigGenerator {
|
|
|
41
53
|
const configs = this.pluginConfig.build
|
|
42
54
|
// Prevent load the default `vite.config.js` file.
|
|
43
55
|
.filter(({ config }) => config)
|
|
44
|
-
.map(
|
|
56
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, buildConfig.target ?? 'main'));
|
|
45
57
|
return await Promise.all(configs);
|
|
46
58
|
}
|
|
47
59
|
async getRendererConfig() {
|
|
@@ -49,10 +61,11 @@ class ViteConfigGenerator {
|
|
|
49
61
|
throw new Error('"config.renderer" must be an Array');
|
|
50
62
|
}
|
|
51
63
|
const configs = this.pluginConfig.renderer
|
|
64
|
+
// Prevent load the default `vite.config.js` file.
|
|
52
65
|
.filter(({ config }) => config)
|
|
53
|
-
.map(
|
|
66
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, 'renderer'));
|
|
54
67
|
return await Promise.all(configs);
|
|
55
68
|
}
|
|
56
69
|
}
|
|
57
70
|
exports.default = ViteConfigGenerator;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLCtCQUF1RDtBQUV2RCxnRUFBMkU7QUFDM0Usc0VBQWlGO0FBQ2pGLHdFQUFtRjtBQUtuRixNQUFNLENBQUMsR0FBRyxJQUFBLGVBQUssRUFBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBSTFELE1BQXFCLG1CQUFtQjtJQUN0QyxZQUE2QixZQUE4QixFQUFtQixVQUFrQixFQUFtQixNQUFlO1FBQXJHLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUFtQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQW1CLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDaEksQ0FBQyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBNkQsRUFBRSxNQUFjO1FBQy9GLE1BQU0sU0FBUyxHQUFjO1lBQzNCLHVEQUF1RDtZQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3hDLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFFZiw2QkFBNkI7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3JCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixlQUFlLEVBQUUsV0FBVztTQUM3QixDQUFDO1FBRUYsbUdBQW1HO1FBQ25HLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFBLHlCQUFrQixFQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNGLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBQSxrQkFBVyxFQUFDLElBQUEsNEJBQWlCLEVBQUMsU0FBK0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3JGLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUEsa0JBQVcsRUFBQyxJQUFBLCtCQUFvQixFQUFDLFNBQStCLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFBLGtCQUFXLEVBQUMsSUFBQSxnQ0FBcUIsRUFBQyxTQUFrQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUY7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsTUFBTSw0Q0FBNEMsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLDhDQUE4QztRQUM5QyxpSEFBaUg7UUFDakgsNEVBQTRFO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3JDLGtEQUFrRDthQUNqRCxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDOUIsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFdkYsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVE7WUFDeEMsa0RBQWtEO2FBQ2pELE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUM5QixHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBaEVELHNDQWdFQyJ9
|
package/dist/VitePlugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VitePlugin.d.ts","sourceRoot":"","sources":["../src/VitePlugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"VitePlugin.d.ts","sourceRoot":"","sources":["../src/VitePlugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAU9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAOxG,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;IAGvB,OAAO,CAAC,UAAU,CAAU;IAG5B,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,OAAO,CAA4B;IAE3C,IAAI,QAAS,MAAM,KAAG,IAAI,CAMxB;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxC,OAAO,KAAK,eAAe,GAE1B;IAED,QAAQ,QAAO,iBAAiB,CAoB9B;IAEF,kBAAkB,gBAAuB,mBAAmB,KAAG,QAAQ,mBAAmB,CAAC,CAwBzF;IAEF,gBAAgB,iBAAwB,mBAAmB,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAc5F;IAEF,UAAU,QAAa,QAAQ,WAAW,CAAC,CA+BzC;IAGF,KAAK,QAAa,QAAQ,IAAI,CAAC,CA4B7B;IAGF,aAAa,QAAa,QAAQ,IAAI,CAAC,CAOrC;IAEF,wBAAwB,QAAa,QAAQ,IAAI,CAAC,CAuBhD;IAEF,WAAW,YAAa;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,8BAAgB,IAAI,CAmB/E;CACH;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/VitePlugin.js
CHANGED
|
@@ -9,9 +9,8 @@ const plugin_base_1 = require("@electron-forge/plugin-base");
|
|
|
9
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
10
10
|
const debug_1 = __importDefault(require("debug"));
|
|
11
11
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
-
|
|
12
|
+
const listr2_1 = require("listr2");
|
|
13
13
|
const vite_1 = __importDefault(require("vite"));
|
|
14
|
-
const package_1 = require("./util/package");
|
|
15
14
|
const plugins_1 = require("./util/plugins");
|
|
16
15
|
const ViteConfig_1 = __importDefault(require("./ViteConfig"));
|
|
17
16
|
const d = (0, debug_1.default)('electron-forge:plugin:vite');
|
|
@@ -62,15 +61,15 @@ Your packaged app may be larger than expected if you dont ignore everything othe
|
|
|
62
61
|
forgeConfig.packagerConfig.ignore = (file) => {
|
|
63
62
|
if (!file)
|
|
64
63
|
return false;
|
|
65
|
-
//
|
|
64
|
+
// `file` always starts with `/`
|
|
66
65
|
// @see - https://github.com/electron/packager/blob/v18.1.3/src/copy-filter.ts#L89-L93
|
|
66
|
+
// Collect the files built by Vite
|
|
67
67
|
return !file.startsWith('/.vite');
|
|
68
68
|
};
|
|
69
69
|
return forgeConfig;
|
|
70
70
|
};
|
|
71
71
|
this.packageAfterCopy = async (_forgeConfig, buildPath) => {
|
|
72
72
|
const pj = await fs_extra_1.default.readJson(node_path_1.default.resolve(this.projectDir, 'package.json'));
|
|
73
|
-
const flatDependencies = await (0, package_1.getFlatDependencies)(this.projectDir);
|
|
74
73
|
if (!pj.main?.includes('.vite/')) {
|
|
75
74
|
throw new Error(`Electron Forge is configured to use the Vite plugin. The plugin expects the
|
|
76
75
|
"main" entry point in "package.json" to be ".vite/*" (where the plugin outputs
|
|
@@ -79,13 +78,7 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
79
78
|
if (pj.config) {
|
|
80
79
|
delete pj.config.forge;
|
|
81
80
|
}
|
|
82
|
-
await fs_extra_1.default.writeJson(node_path_1.default.resolve(buildPath, 'package.json'), pj, {
|
|
83
|
-
spaces: 2,
|
|
84
|
-
});
|
|
85
|
-
// Copy the dependencies in package.json
|
|
86
|
-
for (const dep of flatDependencies) {
|
|
87
|
-
await fs_extra_1.default.copy(dep.src, node_path_1.default.resolve(buildPath, dep.dest));
|
|
88
|
-
}
|
|
81
|
+
await fs_extra_1.default.writeJson(node_path_1.default.resolve(buildPath, 'package.json'), pj, { spaces: 2 });
|
|
89
82
|
};
|
|
90
83
|
this.startLogic = async () => {
|
|
91
84
|
if (VitePlugin.alreadyStarted)
|
|
@@ -99,9 +92,9 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
99
92
|
task: async () => {
|
|
100
93
|
await this.launchRendererDevServers();
|
|
101
94
|
},
|
|
102
|
-
|
|
95
|
+
rendererOptions: {
|
|
103
96
|
persistentOutput: true,
|
|
104
|
-
|
|
97
|
+
timer: { ...listr2_1.PRESET_TIMER },
|
|
105
98
|
},
|
|
106
99
|
},
|
|
107
100
|
// The main process depends on the `server.port` of the renderer process, so the renderer process is run first.
|
|
@@ -110,8 +103,8 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
110
103
|
task: async () => {
|
|
111
104
|
await this.build();
|
|
112
105
|
},
|
|
113
|
-
|
|
114
|
-
|
|
106
|
+
rendererOptions: {
|
|
107
|
+
timer: { ...listr2_1.PRESET_TIMER },
|
|
115
108
|
},
|
|
116
109
|
},
|
|
117
110
|
],
|
|
@@ -163,7 +156,7 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
163
156
|
viteDevServer.printUrls();
|
|
164
157
|
this.servers.push(viteDevServer);
|
|
165
158
|
if (viteDevServer.httpServer) {
|
|
166
|
-
// Make
|
|
159
|
+
// Make sure that `getDefines` in VitePlugin.ts gets the correct `server.port`. (#3198)
|
|
167
160
|
const addressInfo = viteDevServer.httpServer.address();
|
|
168
161
|
const isAddressInfo = (x) => x?.address;
|
|
169
162
|
if (isAddressInfo(addressInfo)) {
|
|
@@ -206,4 +199,4 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
206
199
|
exports.default = VitePlugin;
|
|
207
200
|
exports.VitePlugin = VitePlugin;
|
|
208
201
|
VitePlugin.alreadyStarted = false;
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUE2QjtBQUU3Qiw2REFBOEU7QUFDOUUsa0RBQTBCO0FBQzFCLGtEQUEwQjtBQUMxQix3REFBMEI7QUFDMUIsbUNBQXNDO0FBQ3RDLGdEQUF1QztBQUV2Qyw0Q0FBNkM7QUFDN0MsOERBQStDO0FBUS9DLE1BQU0sQ0FBQyxHQUFHLElBQUEsZUFBSyxFQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFOUMsTUFBcUIsVUFBVyxTQUFRLHdCQUE0QjtJQUFwRTs7UUFHUyxTQUFJLEdBQUcsTUFBTSxDQUFDO1FBRWIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQVVmLGFBQVEsR0FBb0IsRUFBRSxDQUFDO1FBRS9CLFlBQU8sR0FBeUIsRUFBRSxDQUFDO1FBRTNDLFNBQUksR0FBRyxDQUFDLEdBQVcsRUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekIsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBMEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDO1FBV0YsYUFBUSxHQUFHLEdBQXNCLEVBQUU7WUFDakMsT0FBTztnQkFDTCxVQUFVLEVBQUU7b0JBQ1YsSUFBQSxpQ0FBbUIsRUFBZSxLQUFLLElBQUksRUFBRTt3QkFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ25CLE1BQU0sa0JBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUU5QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsQ0FBQyxFQUFFLHVCQUF1QixDQUFDO2lCQUM1QjtnQkFDRCxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDbEMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUM7b0JBQ25DLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDcEIsSUFBSSxLQUFLLENBQUMsU0FBUzs0QkFBRSxPQUFPO3dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDbEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUMzQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2FBQ3hDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRix1QkFBa0IsR0FBRyxLQUFLLEVBQUUsV0FBZ0MsRUFBZ0MsRUFBRTtZQUM1RixXQUFXLENBQUMsY0FBYyxLQUFLLEVBQUUsQ0FBQztZQUVsQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO29CQUMzRCxPQUFPLENBQUMsS0FBSyxDQUNYLGVBQUssQ0FBQyxNQUFNLENBQUM7OzBHQUVtRixDQUFDLENBQ2xHLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTyxXQUFXLENBQUM7YUFDcEI7WUFFRCxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFFeEIsZ0NBQWdDO2dCQUNoQyxzRkFBc0Y7Z0JBRXRGLGtDQUFrQztnQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDO1lBQ0YsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBRUYscUJBQWdCLEdBQUcsS0FBSyxFQUFFLFlBQWlDLEVBQUUsU0FBaUIsRUFBaUIsRUFBRTtZQUMvRixNQUFNLEVBQUUsR0FBRyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUU1RSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUM7O3VDQUVpQixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0Q7WUFFRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUN4QjtZQUVELE1BQU0sa0JBQUUsQ0FBQyxTQUFTLENBQUMsbUJBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQztRQUVGLGVBQVUsR0FBRyxLQUFLLElBQTBCLEVBQUU7WUFDNUMsSUFBSSxVQUFVLENBQUMsY0FBYztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM1QyxVQUFVLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUVqQyxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU5QixPQUFPO2dCQUNMLEtBQUssRUFBRTtvQkFDTDt3QkFDRSxLQUFLLEVBQUUsaURBQWlEO3dCQUN4RCxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7NEJBQ2YsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzt3QkFDeEMsQ0FBQzt3QkFDRCxlQUFlLEVBQUU7NEJBQ2YsZ0JBQWdCLEVBQUUsSUFBSTs0QkFDdEIsS0FBSyxFQUFFLEVBQUUsR0FBRyxxQkFBWSxFQUFFO3lCQUMzQjtxQkFDRjtvQkFDRCwrR0FBK0c7b0JBQy9HO3dCQUNFLEtBQUssRUFBRSw2QkFBNkI7d0JBQ3BDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTs0QkFDZixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDckIsQ0FBQzt3QkFDRCxlQUFlLEVBQUU7NEJBQ2YsS0FBSyxFQUFFLEVBQUUsR0FBRyxxQkFBWSxFQUFFO3lCQUMzQjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUUsS0FBSzthQUNkLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRix5REFBeUQ7UUFDekQsVUFBSyxHQUFHLEtBQUssSUFBbUIsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUQsTUFBTSxVQUFVLEdBQW9CLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQU0sRUFBc0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxVQUFVLENBQUM7WUFFakYsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLEVBQUU7Z0JBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO29CQUN0RCxjQUFJO3lCQUNELEtBQUssQ0FBQzt3QkFDTCxzR0FBc0c7d0JBQ3RHLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixHQUFHLFVBQVU7d0JBQ2IsT0FBTyxFQUFFLENBQUMsSUFBQSxxQkFBVyxFQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3FCQUMvRCxDQUFDO3lCQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUNmLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFOzRCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDNUI7d0JBRUQsT0FBTyxNQUFNLENBQUM7b0JBQ2hCLENBQUMsQ0FBQzt5QkFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2dCQUVILFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUI7WUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO1FBRUYsbUJBQW1CO1FBQ25CLGtCQUFhLEdBQUcsS0FBSyxJQUFtQixFQUFFO1lBQ3hDLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3ZFLE1BQU0sY0FBSSxDQUFDLEtBQUssQ0FBQztvQkFDZixVQUFVLEVBQUUsS0FBSztvQkFDakIsR0FBRyxVQUFVO2lCQUNkLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsNkJBQXdCLEdBQUcsS0FBSyxJQUFtQixFQUFFO1lBQ25ELEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3ZFLE1BQU0sYUFBYSxHQUFHLE1BQU0sY0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDNUMsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLEdBQUcsVUFBVTtpQkFDZCxDQUFDLENBQUM7Z0JBRUgsTUFBTSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFFMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRWpDLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRTtvQkFDNUIsdUZBQXVGO29CQUN2RixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN2RCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQU0sRUFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7b0JBRS9ELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO3dCQUM5QixVQUFVLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQzt3QkFDekIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztxQkFDM0M7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFXLEdBQUcsQ0FBQyxPQUE4QyxFQUFFLEdBQVcsRUFBUSxFQUFFO1lBQ2xGLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ25CLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDbkMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDakI7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBRW5CLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDakMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQzFCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxJQUFJLEdBQUc7Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMscURBQXFEO1lBQ3JELDJDQUEyQztZQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBaE1RLGNBQWMsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFZLGVBQWU7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLG9CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDOztBQWxDSCw2QkEyTkM7QUFFUSxnQ0FBVTtBQTVORix5QkFBYyxHQUFHLEtBQUssQ0FBQyJ9
|
|
@@ -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,UAAsE,CAAC;AAE5F,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;;EAY5C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,uBAcrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAiBtE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 = ['electron', ...node_module_1.builtinModules.map((m) => [m, `node:${m}`]).flat()];
|
|
6
|
+
exports.external = [...exports.builtins];
|
|
7
|
+
// Used for hot reload after preload scripts.
|
|
8
|
+
const viteDevServers = {};
|
|
9
|
+
const viteDevServerUrls = {};
|
|
10
|
+
function getBuildConfig(env) {
|
|
11
|
+
const { root, mode, command } = env;
|
|
12
|
+
return {
|
|
13
|
+
root,
|
|
14
|
+
mode,
|
|
15
|
+
build: {
|
|
16
|
+
// Prevent multiple builds from interfering with each other.
|
|
17
|
+
emptyOutDir: false,
|
|
18
|
+
// 🚧 Multiple builds may conflict.
|
|
19
|
+
outDir: '.vite/build',
|
|
20
|
+
watch: command === 'serve' ? {} : null,
|
|
21
|
+
minify: command === 'build',
|
|
22
|
+
},
|
|
23
|
+
clearScreen: false,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.getBuildConfig = getBuildConfig;
|
|
27
|
+
function getDefineKeys(names) {
|
|
28
|
+
const define = {};
|
|
29
|
+
return names.reduce((acc, name) => {
|
|
30
|
+
const NAME = name.toUpperCase();
|
|
31
|
+
const keys = {
|
|
32
|
+
VITE_DEV_SERVER_URL: `${NAME}_VITE_DEV_SERVER_URL`,
|
|
33
|
+
VITE_NAME: `${NAME}_VITE_NAME`,
|
|
34
|
+
};
|
|
35
|
+
return { ...acc, [name]: keys };
|
|
36
|
+
}, define);
|
|
37
|
+
}
|
|
38
|
+
exports.getDefineKeys = getDefineKeys;
|
|
39
|
+
function getBuildDefine(env) {
|
|
40
|
+
const { command, forgeConfig } = env;
|
|
41
|
+
const names = forgeConfig.renderer.filter(({ name }) => name != null).map(({ name }) => name);
|
|
42
|
+
const defineKeys = getDefineKeys(names);
|
|
43
|
+
const define = Object.entries(defineKeys).reduce((acc, [name, keys]) => {
|
|
44
|
+
const { VITE_DEV_SERVER_URL, VITE_NAME } = keys;
|
|
45
|
+
const def = {
|
|
46
|
+
[VITE_DEV_SERVER_URL]: command === 'serve' ? JSON.stringify(viteDevServerUrls[VITE_DEV_SERVER_URL]) : undefined,
|
|
47
|
+
[VITE_NAME]: JSON.stringify(name),
|
|
48
|
+
};
|
|
49
|
+
return { ...acc, ...def };
|
|
50
|
+
}, {});
|
|
51
|
+
return define;
|
|
52
|
+
}
|
|
53
|
+
exports.getBuildDefine = getBuildDefine;
|
|
54
|
+
function pluginExposeRenderer(name) {
|
|
55
|
+
const { VITE_DEV_SERVER_URL } = getDefineKeys([name])[name];
|
|
56
|
+
return {
|
|
57
|
+
name: '@electron-forge/plugin-vite:expose-renderer',
|
|
58
|
+
configureServer(server) {
|
|
59
|
+
// Expose server for preload scripts hot reload.
|
|
60
|
+
viteDevServers[name] = server;
|
|
61
|
+
server.httpServer?.once('listening', () => {
|
|
62
|
+
const addressInfo = server.httpServer?.address();
|
|
63
|
+
// Expose env constant for main process use.
|
|
64
|
+
viteDevServerUrls[VITE_DEV_SERVER_URL] = `http://localhost:${addressInfo?.port}`;
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
exports.pluginExposeRenderer = pluginExposeRenderer;
|
|
70
|
+
function pluginHotRestart(command) {
|
|
71
|
+
return {
|
|
72
|
+
name: '@electron-forge/plugin-vite:hot-restart',
|
|
73
|
+
closeBundle() {
|
|
74
|
+
if (command === 'reload') {
|
|
75
|
+
for (const server of Object.values(viteDevServers)) {
|
|
76
|
+
// Preload scripts hot reload.
|
|
77
|
+
server.ws.send({ type: 'full-reload' });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (command === 'restart') {
|
|
81
|
+
// Main process hot restart.
|
|
82
|
+
// https://github.com/electron/forge/blob/v7.2.0/packages/api/core/src/api/start.ts#L216-L223
|
|
83
|
+
// TODO: blocked in #3380
|
|
84
|
+
// process.stdin.emit('data', 'rs');
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
exports.pluginHotRestart = pluginHotRestart;
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5iYXNlLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5iYXNlLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkM7QUFLaEMsUUFBQSxRQUFRLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyw0QkFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUUvRSxRQUFBLFFBQVEsR0FBRyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxDQUFDO0FBRXRDLDZDQUE2QztBQUM3QyxNQUFNLGNBQWMsR0FBa0MsRUFBRSxDQUFDO0FBQ3pELE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztBQUVyRCxTQUFnQixjQUFjLENBQUMsR0FBdUI7SUFDcEQsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBRXBDLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLEtBQUssRUFBRTtZQUNMLDREQUE0RDtZQUM1RCxXQUFXLEVBQUUsS0FBSztZQUNsQixtQ0FBbUM7WUFDbkMsTUFBTSxFQUFFLGFBQWE7WUFDckIsS0FBSyxFQUFFLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN0QyxNQUFNLEVBQUUsT0FBTyxLQUFLLE9BQU87U0FDNUI7UUFDRCxXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO0FBQ0osQ0FBQztBQWhCRCx3Q0FnQkM7QUFFRCxTQUFnQixhQUFhLENBQUMsS0FBZTtJQUMzQyxNQUFNLE1BQU0sR0FBOEMsRUFBRSxDQUFDO0lBRTdELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVB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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;AAIpE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,UAAU,CAwBlE"}
|
|
@@ -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) {
|
|
7
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const define = (0, vite_base_config_1.getBuildDefine)(forgeEnv);
|
|
9
|
+
const config = {
|
|
10
|
+
build: {
|
|
11
|
+
lib: {
|
|
12
|
+
entry: forgeConfigSelf.entry,
|
|
13
|
+
fileName: () => '[name].js',
|
|
14
|
+
formats: ['cjs'],
|
|
15
|
+
},
|
|
16
|
+
rollupOptions: {
|
|
17
|
+
external: vite_base_config_1.external,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
plugins: [(0, vite_base_config_1.pluginHotRestart)('restart')],
|
|
21
|
+
define,
|
|
22
|
+
resolve: {
|
|
23
|
+
// Load the Node.js entry.
|
|
24
|
+
conditions: ['node'],
|
|
25
|
+
mainFields: ['module', 'jsnext:main', 'jsnext'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
return (0, vite_1.mergeConfig)((0, vite_base_config_1.getBuildConfig)(forgeEnv), config);
|
|
29
|
+
}
|
|
30
|
+
exports.getConfig = getConfig;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5tYWluLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5tYWluLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0U7QUFFcEUseURBQWdHO0FBRWhHLFNBQWdCLFNBQVMsQ0FBQyxRQUE0QjtJQUNwRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQWMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBZTtRQUN6QixLQUFLLEVBQUU7WUFDTCxHQUFHLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO2dCQUM1QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVztnQkFDM0IsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2pCO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLFFBQVEsRUFBUiwyQkFBUTthQUNUO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFBLG1DQUFnQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU07UUFDTixPQUFPLEVBQUU7WUFDUCwwQkFBMEI7WUFDMUIsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO1NBQ2hEO0tBQ0YsQ0FBQztJQUVGLE9BQU8sSUFBQSxrQkFBVyxFQUFDLElBQUEsaUNBQWMsRUFBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBeEJELDhCQXdCQyJ9
|
|
@@ -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,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,UAAU,CAsBlE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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) {
|
|
7
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const config = {
|
|
9
|
+
build: {
|
|
10
|
+
rollupOptions: {
|
|
11
|
+
external: vite_base_config_1.external,
|
|
12
|
+
// Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.
|
|
13
|
+
input: forgeConfigSelf.entry,
|
|
14
|
+
output: {
|
|
15
|
+
format: 'cjs',
|
|
16
|
+
// It should not be split chunks.
|
|
17
|
+
inlineDynamicImports: true,
|
|
18
|
+
entryFileNames: '[name].js',
|
|
19
|
+
chunkFileNames: '[name].js',
|
|
20
|
+
assetFileNames: '[name].[ext]',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
plugins: [(0, vite_base_config_1.pluginHotRestart)('reload')],
|
|
25
|
+
};
|
|
26
|
+
return (0, vite_1.mergeConfig)((0, vite_base_config_1.getBuildConfig)(forgeEnv), config);
|
|
27
|
+
}
|
|
28
|
+
exports.getConfig = getConfig;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5wcmVsb2FkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdml0ZS5wcmVsb2FkLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0U7QUFFcEUseURBQWdGO0FBRWhGLFNBQWdCLFNBQVMsQ0FBQyxRQUE0QjtJQUNwRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFlO1FBQ3pCLEtBQUssRUFBRTtZQUNMLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQVIsMkJBQVE7Z0JBQ1IsNEdBQTRHO2dCQUM1RyxLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7Z0JBQzVCLE1BQU0sRUFBRTtvQkFDTixNQUFNLEVBQUUsS0FBSztvQkFDYixpQ0FBaUM7b0JBQ2pDLG9CQUFvQixFQUFFLElBQUk7b0JBQzFCLGNBQWMsRUFBRSxXQUFXO29CQUMzQixjQUFjLEVBQUUsV0FBVztvQkFDM0IsY0FBYyxFQUFFLGNBQWM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDLElBQUEsbUNBQWdCLEVBQUMsUUFBUSxDQUFDLENBQUM7S0FDdEMsQ0FBQztJQUVGLE9BQU8sSUFBQSxrQkFBVyxFQUFDLElBQUEsaUNBQWMsRUFBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBdEJELDhCQXNCQyJ9
|
|
@@ -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;AAKvD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,cAiBxD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConfig = void 0;
|
|
4
|
+
const vite_base_config_1 = require("./vite.base.config");
|
|
5
|
+
// https://vitejs.dev/config
|
|
6
|
+
function getConfig(forgeEnv) {
|
|
7
|
+
const { root, mode, forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const name = forgeConfigSelf.name ?? '';
|
|
9
|
+
return {
|
|
10
|
+
root,
|
|
11
|
+
mode,
|
|
12
|
+
base: './',
|
|
13
|
+
build: {
|
|
14
|
+
outDir: `.vite/renderer/${name}`,
|
|
15
|
+
},
|
|
16
|
+
plugins: [(0, vite_base_config_1.pluginExposeRenderer)(name)],
|
|
17
|
+
resolve: {
|
|
18
|
+
preserveSymlinks: true,
|
|
19
|
+
},
|
|
20
|
+
clearScreen: false,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.getConfig = getConfig;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5yZW5kZXJlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3ZpdGUucmVuZGVyZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlEQUEwRDtBQUUxRCw0QkFBNEI7QUFDNUIsU0FBZ0IsU0FBUyxDQUFDLFFBQStCO0lBQ3ZELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUNqRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUV4QyxPQUFPO1FBQ0wsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRTtZQUNMLE1BQU0sRUFBRSxrQkFBa0IsSUFBSSxFQUFFO1NBQ2pDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBQSx1Q0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLEVBQUU7WUFDUCxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsV0FBVyxFQUFFLEtBQUs7S0FDTCxDQUFDO0FBQ2xCLENBQUM7QUFqQkQsOEJBaUJDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/util/plugins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/util/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,eAO/C"}
|
package/dist/util/plugins.js
CHANGED
|
@@ -10,4 +10,4 @@ function onBuildDone(callback) {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
exports.onBuildDone = onBuildDone;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBZ0IsV0FBVyxDQUFDLFFBQW9CO0lBQzlDLE9BQU87UUFDTCxJQUFJLEVBQUUsd0NBQXdDO1FBQzlDLFdBQVc7WUFDVCxRQUFRLEVBQUUsQ0FBQztRQUNiLENBQUM7S0FDUSxDQUFDO0FBQ2QsQ0FBQztBQVBELGtDQU9DIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@electron-forge/plugin-vite",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"description": "Vite plugin for Electron Forge, lets you use Vite directly in your tooling",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,16 +15,17 @@
|
|
|
15
15
|
"test": "xvfb-maybe mocha --config ../../../.mocharc.js test/**/*_spec.ts test/*_spec.ts"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@electron-forge/core-utils": "7.
|
|
19
|
-
"@electron-forge/plugin-base": "7.
|
|
20
|
-
"@electron-forge/shared-types": "7.
|
|
21
|
-
"@electron-forge/web-multi-logger": "7.
|
|
18
|
+
"@electron-forge/core-utils": "7.5.0",
|
|
19
|
+
"@electron-forge/plugin-base": "7.5.0",
|
|
20
|
+
"@electron-forge/shared-types": "7.5.0",
|
|
21
|
+
"@electron-forge/web-multi-logger": "7.5.0",
|
|
22
22
|
"chalk": "^4.0.0",
|
|
23
23
|
"debug": "^4.3.1",
|
|
24
|
-
"fs-extra": "^10.0.0"
|
|
24
|
+
"fs-extra": "^10.0.0",
|
|
25
|
+
"listr2": "^7.0.2"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"@electron/packager": "^18.
|
|
28
|
+
"@electron/packager": "^18.3.5",
|
|
28
29
|
"@malept/cross-spawn-promise": "^2.0.0",
|
|
29
30
|
"@types/node": "^18.0.3",
|
|
30
31
|
"chai": "^4.3.3",
|
|
@@ -43,5 +44,5 @@
|
|
|
43
44
|
"dist",
|
|
44
45
|
"src"
|
|
45
46
|
],
|
|
46
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "5941a9a067c8af0daee0aab01c44a0040a9bdea0"
|
|
47
48
|
}
|
package/src/Config.ts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
// eslint-disable-next-line node/no-unpublished-import
|
|
2
1
|
import type { LibraryOptions } from 'vite';
|
|
3
2
|
|
|
4
3
|
export interface VitePluginBuildConfig {
|
|
5
4
|
/**
|
|
6
5
|
* Alias of `build.lib.entry` in `config`.
|
|
7
6
|
*/
|
|
8
|
-
entry
|
|
7
|
+
entry: LibraryOptions['entry'];
|
|
9
8
|
/**
|
|
10
9
|
* Vite config file path.
|
|
11
10
|
*/
|
|
12
11
|
config: string;
|
|
12
|
+
/**
|
|
13
|
+
* The build target is main process or preload script.
|
|
14
|
+
* @defaultValue 'main'
|
|
15
|
+
*/
|
|
16
|
+
target?: 'main' | 'preload';
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
export interface VitePluginRendererConfig {
|
|
16
20
|
/**
|
|
17
21
|
* Human friendly name of your entry point.
|
|
18
22
|
*/
|
|
19
|
-
name
|
|
23
|
+
name: string;
|
|
20
24
|
/**
|
|
21
25
|
* Vite config file path.
|
|
22
26
|
*/
|
package/src/ViteConfig.ts
CHANGED
|
@@ -1,33 +1,47 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { loadConfigFromFile, mergeConfig } from 'vite';
|
|
3
|
+
|
|
4
|
+
import { getConfig as getMainViteConfig } from './config/vite.main.config';
|
|
5
|
+
import { getConfig as getPreloadViteConfig } from './config/vite.preload.config';
|
|
6
|
+
import { getConfig as getRendererViteConfig } from './config/vite.renderer.config';
|
|
4
7
|
|
|
5
8
|
import type { VitePluginBuildConfig, VitePluginConfig, VitePluginRendererConfig } from './Config';
|
|
6
|
-
// eslint-disable-next-line node/no-unpublished-import
|
|
7
9
|
import type { ConfigEnv, UserConfig } from 'vite';
|
|
8
10
|
|
|
9
11
|
const d = debug('@electron-forge/plugin-vite:ViteConfig');
|
|
10
12
|
|
|
13
|
+
type Target = NonNullable<VitePluginBuildConfig['target']> | 'renderer';
|
|
14
|
+
|
|
11
15
|
export default class ViteConfigGenerator {
|
|
12
16
|
constructor(private readonly pluginConfig: VitePluginConfig, private readonly projectDir: string, private readonly isProd: boolean) {
|
|
13
17
|
d('Config mode:', this.mode);
|
|
14
18
|
}
|
|
15
19
|
|
|
16
|
-
resolveConfig(buildConfig: VitePluginBuildConfig | VitePluginRendererConfig,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
async resolveConfig(buildConfig: VitePluginBuildConfig | VitePluginRendererConfig, target: Target): Promise<UserConfig> {
|
|
21
|
+
const configEnv: ConfigEnv = {
|
|
22
|
+
// @see - https://vitejs.dev/config/#conditional-config
|
|
23
|
+
command: this.isProd ? 'build' : 'serve',
|
|
24
|
+
// `mode` affects `.env.[mode]` file load.
|
|
25
|
+
mode: this.mode,
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
Object.assign(configEnv, {
|
|
27
|
+
// Forge extension variables.
|
|
24
28
|
root: this.projectDir,
|
|
25
29
|
forgeConfig: this.pluginConfig,
|
|
26
30
|
forgeConfigSelf: buildConfig,
|
|
27
|
-
}
|
|
31
|
+
};
|
|
28
32
|
|
|
29
33
|
// `configEnv` is to be passed as an arguments when the user export a function in `vite.config.js`.
|
|
30
|
-
|
|
34
|
+
const userConfig = (await loadConfigFromFile(configEnv, buildConfig.config))?.config ?? {};
|
|
35
|
+
switch (target) {
|
|
36
|
+
case 'main':
|
|
37
|
+
return mergeConfig(getMainViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
|
|
38
|
+
case 'preload':
|
|
39
|
+
return mergeConfig(getPreloadViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
|
|
40
|
+
case 'renderer':
|
|
41
|
+
return mergeConfig(getRendererViteConfig(configEnv as ConfigEnv<'renderer'>), userConfig);
|
|
42
|
+
default:
|
|
43
|
+
throw new Error(`Unknown target: ${target}, expected 'main', 'preload' or 'renderer'`);
|
|
44
|
+
}
|
|
31
45
|
}
|
|
32
46
|
|
|
33
47
|
get mode(): string {
|
|
@@ -45,7 +59,7 @@ export default class ViteConfigGenerator {
|
|
|
45
59
|
const configs = this.pluginConfig.build
|
|
46
60
|
// Prevent load the default `vite.config.js` file.
|
|
47
61
|
.filter(({ config }) => config)
|
|
48
|
-
.map
|
|
62
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, buildConfig.target ?? 'main'));
|
|
49
63
|
|
|
50
64
|
return await Promise.all(configs);
|
|
51
65
|
}
|
|
@@ -56,8 +70,9 @@ export default class ViteConfigGenerator {
|
|
|
56
70
|
}
|
|
57
71
|
|
|
58
72
|
const configs = this.pluginConfig.renderer
|
|
73
|
+
// Prevent load the default `vite.config.js` file.
|
|
59
74
|
.filter(({ config }) => config)
|
|
60
|
-
.map
|
|
75
|
+
.map((buildConfig) => this.resolveConfig(buildConfig, 'renderer'));
|
|
61
76
|
|
|
62
77
|
return await Promise.all(configs);
|
|
63
78
|
}
|
package/src/VitePlugin.ts
CHANGED
|
@@ -4,10 +4,9 @@ import { namedHookWithTaskFn, PluginBase } from '@electron-forge/plugin-base';
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import debug from 'debug';
|
|
6
6
|
import fs from 'fs-extra';
|
|
7
|
-
|
|
7
|
+
import { PRESET_TIMER } from 'listr2';
|
|
8
8
|
import { default as vite } from 'vite';
|
|
9
9
|
|
|
10
|
-
import { getFlatDependencies } from './util/package';
|
|
11
10
|
import { onBuildDone } from './util/plugins';
|
|
12
11
|
import ViteConfigGenerator from './ViteConfig';
|
|
13
12
|
|
|
@@ -94,8 +93,10 @@ Your packaged app may be larger than expected if you dont ignore everything othe
|
|
|
94
93
|
forgeConfig.packagerConfig.ignore = (file: string) => {
|
|
95
94
|
if (!file) return false;
|
|
96
95
|
|
|
97
|
-
//
|
|
96
|
+
// `file` always starts with `/`
|
|
98
97
|
// @see - https://github.com/electron/packager/blob/v18.1.3/src/copy-filter.ts#L89-L93
|
|
98
|
+
|
|
99
|
+
// Collect the files built by Vite
|
|
99
100
|
return !file.startsWith('/.vite');
|
|
100
101
|
};
|
|
101
102
|
return forgeConfig;
|
|
@@ -103,7 +104,6 @@ Your packaged app may be larger than expected if you dont ignore everything othe
|
|
|
103
104
|
|
|
104
105
|
packageAfterCopy = async (_forgeConfig: ResolvedForgeConfig, buildPath: string): Promise<void> => {
|
|
105
106
|
const pj = await fs.readJson(path.resolve(this.projectDir, 'package.json'));
|
|
106
|
-
const flatDependencies = await getFlatDependencies(this.projectDir);
|
|
107
107
|
|
|
108
108
|
if (!pj.main?.includes('.vite/')) {
|
|
109
109
|
throw new Error(`Electron Forge is configured to use the Vite plugin. The plugin expects the
|
|
@@ -115,14 +115,7 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
115
115
|
delete pj.config.forge;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
await fs.writeJson(path.resolve(buildPath, 'package.json'), pj, {
|
|
119
|
-
spaces: 2,
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
// Copy the dependencies in package.json
|
|
123
|
-
for (const dep of flatDependencies) {
|
|
124
|
-
await fs.copy(dep.src, path.resolve(buildPath, dep.dest));
|
|
125
|
-
}
|
|
118
|
+
await fs.writeJson(path.resolve(buildPath, 'package.json'), pj, { spaces: 2 });
|
|
126
119
|
};
|
|
127
120
|
|
|
128
121
|
startLogic = async (): Promise<StartResult> => {
|
|
@@ -138,9 +131,9 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
138
131
|
task: async () => {
|
|
139
132
|
await this.launchRendererDevServers();
|
|
140
133
|
},
|
|
141
|
-
|
|
134
|
+
rendererOptions: {
|
|
142
135
|
persistentOutput: true,
|
|
143
|
-
|
|
136
|
+
timer: { ...PRESET_TIMER },
|
|
144
137
|
},
|
|
145
138
|
},
|
|
146
139
|
// The main process depends on the `server.port` of the renderer process, so the renderer process is run first.
|
|
@@ -149,8 +142,8 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
149
142
|
task: async () => {
|
|
150
143
|
await this.build();
|
|
151
144
|
},
|
|
152
|
-
|
|
153
|
-
|
|
145
|
+
rendererOptions: {
|
|
146
|
+
timer: { ...PRESET_TIMER },
|
|
154
147
|
},
|
|
155
148
|
},
|
|
156
149
|
],
|
|
@@ -212,7 +205,7 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`);
|
|
|
212
205
|
this.servers.push(viteDevServer);
|
|
213
206
|
|
|
214
207
|
if (viteDevServer.httpServer) {
|
|
215
|
-
// Make
|
|
208
|
+
// Make sure that `getDefines` in VitePlugin.ts gets the correct `server.port`. (#3198)
|
|
216
209
|
const addressInfo = viteDevServer.httpServer.address();
|
|
217
210
|
const isAddressInfo = (x: any): x is AddressInfo => x?.address;
|
|
218
211
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { builtinModules } from 'node:module';
|
|
2
|
+
|
|
3
|
+
import type { AddressInfo } from 'node:net';
|
|
4
|
+
import type { ConfigEnv, Plugin, UserConfig, ViteDevServer } from 'vite';
|
|
5
|
+
|
|
6
|
+
export const builtins = ['electron', ...builtinModules.map((m) => [m, `node:${m}`]).flat()];
|
|
7
|
+
|
|
8
|
+
export const external = [...builtins];
|
|
9
|
+
|
|
10
|
+
// Used for hot reload after preload scripts.
|
|
11
|
+
const viteDevServers: Record<string, ViteDevServer> = {};
|
|
12
|
+
const viteDevServerUrls: Record<string, string> = {};
|
|
13
|
+
|
|
14
|
+
export function getBuildConfig(env: ConfigEnv<'build'>): UserConfig {
|
|
15
|
+
const { root, mode, command } = env;
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
root,
|
|
19
|
+
mode,
|
|
20
|
+
build: {
|
|
21
|
+
// Prevent multiple builds from interfering with each other.
|
|
22
|
+
emptyOutDir: false,
|
|
23
|
+
// 🚧 Multiple builds may conflict.
|
|
24
|
+
outDir: '.vite/build',
|
|
25
|
+
watch: command === 'serve' ? {} : null,
|
|
26
|
+
minify: command === 'build',
|
|
27
|
+
},
|
|
28
|
+
clearScreen: false,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function getDefineKeys(names: string[]) {
|
|
33
|
+
const define: { [name: string]: VitePluginRuntimeKeys } = {};
|
|
34
|
+
|
|
35
|
+
return names.reduce((acc, name) => {
|
|
36
|
+
const NAME = name.toUpperCase();
|
|
37
|
+
const keys: VitePluginRuntimeKeys = {
|
|
38
|
+
VITE_DEV_SERVER_URL: `${NAME}_VITE_DEV_SERVER_URL`,
|
|
39
|
+
VITE_NAME: `${NAME}_VITE_NAME`,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
return { ...acc, [name]: keys };
|
|
43
|
+
}, define);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function getBuildDefine(env: ConfigEnv<'build'>) {
|
|
47
|
+
const { command, forgeConfig } = env;
|
|
48
|
+
const names = forgeConfig.renderer.filter(({ name }) => name != null).map(({ name }) => name!);
|
|
49
|
+
const defineKeys = getDefineKeys(names);
|
|
50
|
+
const define = Object.entries(defineKeys).reduce((acc, [name, keys]) => {
|
|
51
|
+
const { VITE_DEV_SERVER_URL, VITE_NAME } = keys;
|
|
52
|
+
const def = {
|
|
53
|
+
[VITE_DEV_SERVER_URL]: command === 'serve' ? JSON.stringify(viteDevServerUrls[VITE_DEV_SERVER_URL]) : undefined,
|
|
54
|
+
[VITE_NAME]: JSON.stringify(name),
|
|
55
|
+
};
|
|
56
|
+
return { ...acc, ...def };
|
|
57
|
+
}, {} as Record<string, any>);
|
|
58
|
+
|
|
59
|
+
return define;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function pluginExposeRenderer(name: string): Plugin {
|
|
63
|
+
const { VITE_DEV_SERVER_URL } = getDefineKeys([name])[name];
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
name: '@electron-forge/plugin-vite:expose-renderer',
|
|
67
|
+
configureServer(server) {
|
|
68
|
+
// Expose server for preload scripts hot reload.
|
|
69
|
+
viteDevServers[name] = server;
|
|
70
|
+
|
|
71
|
+
server.httpServer?.once('listening', () => {
|
|
72
|
+
const addressInfo = server.httpServer?.address() as AddressInfo;
|
|
73
|
+
// Expose env constant for main process use.
|
|
74
|
+
viteDevServerUrls[VITE_DEV_SERVER_URL] = `http://localhost:${addressInfo?.port}`;
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function pluginHotRestart(command: 'reload' | 'restart'): Plugin {
|
|
81
|
+
return {
|
|
82
|
+
name: '@electron-forge/plugin-vite:hot-restart',
|
|
83
|
+
closeBundle() {
|
|
84
|
+
if (command === 'reload') {
|
|
85
|
+
for (const server of Object.values(viteDevServers)) {
|
|
86
|
+
// Preload scripts hot reload.
|
|
87
|
+
server.ws.send({ type: 'full-reload' });
|
|
88
|
+
}
|
|
89
|
+
} else if (command === 'restart') {
|
|
90
|
+
// Main process hot restart.
|
|
91
|
+
// https://github.com/electron/forge/blob/v7.2.0/packages/api/core/src/api/start.ts#L216-L223
|
|
92
|
+
// TODO: blocked in #3380
|
|
93
|
+
// process.stdin.emit('data', 'rs');
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite';
|
|
2
|
+
|
|
3
|
+
import { external, getBuildConfig, getBuildDefine, pluginHotRestart } from './vite.base.config';
|
|
4
|
+
|
|
5
|
+
export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
|
|
6
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
7
|
+
const define = getBuildDefine(forgeEnv);
|
|
8
|
+
const config: UserConfig = {
|
|
9
|
+
build: {
|
|
10
|
+
lib: {
|
|
11
|
+
entry: forgeConfigSelf.entry,
|
|
12
|
+
fileName: () => '[name].js',
|
|
13
|
+
formats: ['cjs'],
|
|
14
|
+
},
|
|
15
|
+
rollupOptions: {
|
|
16
|
+
external,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
plugins: [pluginHotRestart('restart')],
|
|
20
|
+
define,
|
|
21
|
+
resolve: {
|
|
22
|
+
// Load the Node.js entry.
|
|
23
|
+
conditions: ['node'],
|
|
24
|
+
mainFields: ['module', 'jsnext:main', 'jsnext'],
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return mergeConfig(getBuildConfig(forgeEnv), config);
|
|
29
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ConfigEnv, mergeConfig, type UserConfig } from 'vite';
|
|
2
|
+
|
|
3
|
+
import { external, getBuildConfig, pluginHotRestart } from './vite.base.config';
|
|
4
|
+
|
|
5
|
+
export function getConfig(forgeEnv: ConfigEnv<'build'>): UserConfig {
|
|
6
|
+
const { forgeConfigSelf } = forgeEnv;
|
|
7
|
+
const config: UserConfig = {
|
|
8
|
+
build: {
|
|
9
|
+
rollupOptions: {
|
|
10
|
+
external,
|
|
11
|
+
// Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.
|
|
12
|
+
input: forgeConfigSelf.entry,
|
|
13
|
+
output: {
|
|
14
|
+
format: 'cjs',
|
|
15
|
+
// It should not be split chunks.
|
|
16
|
+
inlineDynamicImports: true,
|
|
17
|
+
entryFileNames: '[name].js',
|
|
18
|
+
chunkFileNames: '[name].js',
|
|
19
|
+
assetFileNames: '[name].[ext]',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
plugins: [pluginHotRestart('reload')],
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return mergeConfig(getBuildConfig(forgeEnv), config);
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ConfigEnv, type UserConfig } from 'vite';
|
|
2
|
+
|
|
3
|
+
import { pluginExposeRenderer } from './vite.base.config';
|
|
4
|
+
|
|
5
|
+
// https://vitejs.dev/config
|
|
6
|
+
export function getConfig(forgeEnv: ConfigEnv<'renderer'>) {
|
|
7
|
+
const { root, mode, forgeConfigSelf } = forgeEnv;
|
|
8
|
+
const name = forgeConfigSelf.name ?? '';
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
root,
|
|
12
|
+
mode,
|
|
13
|
+
base: './',
|
|
14
|
+
build: {
|
|
15
|
+
outDir: `.vite/renderer/${name}`,
|
|
16
|
+
},
|
|
17
|
+
plugins: [pluginExposeRenderer(name)],
|
|
18
|
+
resolve: {
|
|
19
|
+
preserveSymlinks: true,
|
|
20
|
+
},
|
|
21
|
+
clearScreen: false,
|
|
22
|
+
} as UserConfig;
|
|
23
|
+
}
|
package/src/util/plugins.ts
CHANGED
package/dist/util/package.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface Dependency {
|
|
2
|
-
name: string;
|
|
3
|
-
path: SourceAndDestination;
|
|
4
|
-
dependencies: Dependency[];
|
|
5
|
-
}
|
|
6
|
-
export interface SourceAndDestination {
|
|
7
|
-
src: string;
|
|
8
|
-
dest: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function isDirectory(p: string): Promise<boolean>;
|
|
11
|
-
export declare function lookupNodeModulesPaths(root: string, paths?: string[]): Promise<string[]>;
|
|
12
|
-
export declare function resolveDependencies(root: string): Promise<Dependency[]>;
|
|
13
|
-
export declare function getFlatDependencies(root?: string): Promise<SourceAndDestination[]>;
|
|
14
|
-
//# sourceMappingURL=package.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/util/package.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,wBAAsB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7D;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYlG;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,yBAmDrD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,SAAgB,mCAW7D"}
|
package/dist/util/package.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
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.getFlatDependencies = exports.resolveDependencies = exports.lookupNodeModulesPaths = exports.isDirectory = void 0;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
-
function isRootPath(dir) {
|
|
10
|
-
// *unix or Windows root path
|
|
11
|
-
return dir === '/' || /^[a-zA-Z]:\\$/i.test(dir);
|
|
12
|
-
}
|
|
13
|
-
async function isDirectory(p) {
|
|
14
|
-
try {
|
|
15
|
-
const stat = await fs_extra_1.default.promises.stat(p);
|
|
16
|
-
return stat.isDirectory();
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.isDirectory = isDirectory;
|
|
23
|
-
async function lookupNodeModulesPaths(root, paths = []) {
|
|
24
|
-
if (!root)
|
|
25
|
-
return paths;
|
|
26
|
-
if (!node_path_1.default.isAbsolute(root))
|
|
27
|
-
return paths;
|
|
28
|
-
const p = node_path_1.default.join(root, 'node_modules');
|
|
29
|
-
if (await isDirectory(p)) {
|
|
30
|
-
paths = paths.concat(p);
|
|
31
|
-
}
|
|
32
|
-
root = node_path_1.default.join(root, '..');
|
|
33
|
-
return isRootPath(root) ? paths : await lookupNodeModulesPaths(root, paths);
|
|
34
|
-
}
|
|
35
|
-
exports.lookupNodeModulesPaths = lookupNodeModulesPaths;
|
|
36
|
-
async function resolveDependencies(root) {
|
|
37
|
-
const rootDependencies = Object.keys((await fs_extra_1.default.readJson(node_path_1.default.join(root, 'package.json'))).dependencies || {});
|
|
38
|
-
const resolve = async (prePath, dependencies, collected = new Map()) => await Promise.all(dependencies.map(async (name) => {
|
|
39
|
-
let curPath = prePath, depPath = null, packageJson = null;
|
|
40
|
-
while (!packageJson && !isRootPath(curPath)) {
|
|
41
|
-
const allNodeModules = await lookupNodeModulesPaths(curPath);
|
|
42
|
-
for (const nodeModules of allNodeModules) {
|
|
43
|
-
depPath = node_path_1.default.join(nodeModules, name);
|
|
44
|
-
if (await fs_extra_1.default.pathExists(depPath))
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
if (depPath) {
|
|
48
|
-
try {
|
|
49
|
-
packageJson = await fs_extra_1.default.readJson(node_path_1.default.join(depPath, 'package.json'));
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
// lookup node_modules
|
|
53
|
-
curPath = node_path_1.default.join(curPath, '..');
|
|
54
|
-
if (curPath.length < root.length) {
|
|
55
|
-
console.error(`not found 'node_modules' in root path: ${root}`);
|
|
56
|
-
throw err;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (!depPath || !packageJson) {
|
|
62
|
-
throw new Error(`find dependencies error in: ${curPath}`);
|
|
63
|
-
}
|
|
64
|
-
const result = {
|
|
65
|
-
name,
|
|
66
|
-
path: {
|
|
67
|
-
src: depPath,
|
|
68
|
-
dest: node_path_1.default.relative(root, depPath),
|
|
69
|
-
},
|
|
70
|
-
dependencies: [],
|
|
71
|
-
};
|
|
72
|
-
const shouldResolveDeps = !collected.has(depPath);
|
|
73
|
-
collected.set(depPath, result);
|
|
74
|
-
if (shouldResolveDeps) {
|
|
75
|
-
result.dependencies = await resolve(depPath, Object.keys(packageJson.dependencies || {}), collected);
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
}));
|
|
79
|
-
return resolve(root, rootDependencies);
|
|
80
|
-
}
|
|
81
|
-
exports.resolveDependencies = resolveDependencies;
|
|
82
|
-
async function getFlatDependencies(root = process.cwd()) {
|
|
83
|
-
const depsTree = await resolveDependencies(root);
|
|
84
|
-
const depsFlat = new Map();
|
|
85
|
-
const flatten = (dep) => {
|
|
86
|
-
depsFlat.set(dep.path.src, dep.path); // dedup
|
|
87
|
-
dep.dependencies.forEach(flatten);
|
|
88
|
-
};
|
|
89
|
-
depsTree.forEach(flatten);
|
|
90
|
-
return [...depsFlat.values()];
|
|
91
|
-
}
|
|
92
|
-
exports.getFlatDependencies = getFlatDependencies;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQTZCO0FBRTdCLHdEQUEwQjtBQWExQixTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLDZCQUE2QjtJQUM3QixPQUFPLEdBQUcsS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFTSxLQUFLLFVBQVUsV0FBVyxDQUFDLENBQVM7SUFDekMsSUFBSTtRQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzNCO0lBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsa0NBT0M7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUU7SUFDN0UsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN4QixJQUFJLENBQUMsbUJBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFekMsTUFBTSxDQUFDLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRTFDLElBQUksTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekI7SUFDRCxJQUFJLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTdCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxL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
|
package/src/util/package.ts
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
|
|
3
|
-
import fs from 'fs-extra';
|
|
4
|
-
|
|
5
|
-
export interface Dependency {
|
|
6
|
-
name: string;
|
|
7
|
-
path: SourceAndDestination;
|
|
8
|
-
dependencies: Dependency[];
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface SourceAndDestination {
|
|
12
|
-
src: string;
|
|
13
|
-
dest: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function isRootPath(dir: string) {
|
|
17
|
-
// *unix or Windows root path
|
|
18
|
-
return dir === '/' || /^[a-zA-Z]:\\$/i.test(dir);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export async function isDirectory(p: string): Promise<boolean> {
|
|
22
|
-
try {
|
|
23
|
-
const stat = await fs.promises.stat(p);
|
|
24
|
-
return stat.isDirectory();
|
|
25
|
-
} catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export async function lookupNodeModulesPaths(root: string, paths: string[] = []): Promise<string[]> {
|
|
31
|
-
if (!root) return paths;
|
|
32
|
-
if (!path.isAbsolute(root)) return paths;
|
|
33
|
-
|
|
34
|
-
const p = path.join(root, 'node_modules');
|
|
35
|
-
|
|
36
|
-
if (await isDirectory(p)) {
|
|
37
|
-
paths = paths.concat(p);
|
|
38
|
-
}
|
|
39
|
-
root = path.join(root, '..');
|
|
40
|
-
|
|
41
|
-
return isRootPath(root) ? paths : await lookupNodeModulesPaths(root, paths);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export async function resolveDependencies(root: string) {
|
|
45
|
-
const rootDependencies = Object.keys((await fs.readJson(path.join(root, 'package.json'))).dependencies || {});
|
|
46
|
-
const resolve = async (prePath: string, dependencies: string[], collected: Map<string, Dependency> = new Map()) =>
|
|
47
|
-
await Promise.all(
|
|
48
|
-
dependencies.map(async (name) => {
|
|
49
|
-
let curPath = prePath,
|
|
50
|
-
depPath = null,
|
|
51
|
-
packageJson = null;
|
|
52
|
-
while (!packageJson && !isRootPath(curPath)) {
|
|
53
|
-
const allNodeModules = await lookupNodeModulesPaths(curPath);
|
|
54
|
-
|
|
55
|
-
for (const nodeModules of allNodeModules) {
|
|
56
|
-
depPath = path.join(nodeModules, name);
|
|
57
|
-
if (await fs.pathExists(depPath)) break;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (depPath) {
|
|
61
|
-
try {
|
|
62
|
-
packageJson = await fs.readJson(path.join(depPath, 'package.json'));
|
|
63
|
-
} catch (err) {
|
|
64
|
-
// lookup node_modules
|
|
65
|
-
curPath = path.join(curPath, '..');
|
|
66
|
-
if (curPath.length < root.length) {
|
|
67
|
-
console.error(`not found 'node_modules' in root path: ${root}`);
|
|
68
|
-
throw err;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (!depPath || !packageJson) {
|
|
75
|
-
throw new Error(`find dependencies error in: ${curPath}`);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const result: Dependency = {
|
|
79
|
-
name,
|
|
80
|
-
path: {
|
|
81
|
-
src: depPath,
|
|
82
|
-
dest: path.relative(root, depPath),
|
|
83
|
-
},
|
|
84
|
-
dependencies: [],
|
|
85
|
-
};
|
|
86
|
-
const shouldResolveDeps = !collected.has(depPath);
|
|
87
|
-
collected.set(depPath, result);
|
|
88
|
-
if (shouldResolveDeps) {
|
|
89
|
-
result.dependencies = await resolve(depPath, Object.keys(packageJson.dependencies || {}), collected);
|
|
90
|
-
}
|
|
91
|
-
return result;
|
|
92
|
-
})
|
|
93
|
-
);
|
|
94
|
-
return resolve(root, rootDependencies);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export async function getFlatDependencies(root = process.cwd()) {
|
|
98
|
-
const depsTree = await resolveDependencies(root);
|
|
99
|
-
const depsFlat = new Map<string, SourceAndDestination>();
|
|
100
|
-
|
|
101
|
-
const flatten = (dep: Dependency) => {
|
|
102
|
-
depsFlat.set(dep.path.src, dep.path); // dedup
|
|
103
|
-
dep.dependencies.forEach(flatten);
|
|
104
|
-
};
|
|
105
|
-
depsTree.forEach(flatten);
|
|
106
|
-
|
|
107
|
-
return [...depsFlat.values()];
|
|
108
|
-
}
|