Skip to content

Commit 53057ba

Browse files
authored
feat: allow packaging a local electron version (#1702)
1 parent d14d6e6 commit 53057ba

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

src/interfaces.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ export type {
88

99
export type Files = Map<string, string>;
1010

11-
export type FileTransform = (files: Files) => Promise<Files>;
11+
export type FileTransform = (
12+
files: Files,
13+
version: RunnableVersion,
14+
) => Promise<Files>;
1215

1316
export type FileTransformOperation = 'dotfiles' | 'forge';
1417

src/renderer/file-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export class FileManager {
142142
)) {
143143
try {
144144
console.log(`getFiles: Applying ${transform.name}`);
145-
output = await transform(output);
145+
output = await transform(output, app.state.currentElectronVersion);
146146
} catch (error) {
147147
console.warn(`getFiles: Failed to apply transform`, {
148148
transform,

src/renderer/transforms/forge.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
import { Files, PACKAGE_NAME } from '../../interfaces';
1+
import { Files, PACKAGE_NAME, RunnableVersion } from '../../interfaces';
22
import { getForgeVersion } from '../utils/get-package';
33

44
/**
55
* This transform turns the files into an electron-forge
66
* project.
77
*/
8-
export async function forgeTransform(files: Files): Promise<Files> {
8+
export async function forgeTransform(
9+
files: Files,
10+
version?: RunnableVersion,
11+
): Promise<Files> {
912
if (files.get(PACKAGE_NAME)) {
1013
try {
1114
const parsed = JSON.parse(files.get(PACKAGE_NAME)!);
@@ -47,6 +50,26 @@ export async function forgeTransform(files: Files): Promise<Files> {
4750
};
4851
}
4952

53+
// Package local version if available.
54+
if (version?.localPath) {
55+
devDependencies['@electron-forge/plugin-local-electron'] = forgeVersion;
56+
config.forge.plugins = [
57+
{
58+
name: '@electron-forge/plugin-local-electron',
59+
config: {
60+
electronPath: version.localPath,
61+
},
62+
},
63+
];
64+
65+
// Replace electron dep in package.json with a legitimate
66+
// released version so it doesn't error on npm install.
67+
if (parsed.devDependencies.electron) {
68+
const latest = await window.ElectronFiddle.getLatestStable();
69+
parsed.devDependencies.electron = latest?.version;
70+
}
71+
}
72+
5073
// electron-forge makers
5174
config.forge.makers = [
5275
{

0 commit comments

Comments
 (0)