Skip to content

Commit 48b1a82

Browse files
authored
feat: support custom Electron version (#230)
* feat: support custom Electron version * chore: remove require.resolve
1 parent 181363d commit 48b1a82

File tree

5 files changed

+30
-6
lines changed

5 files changed

+30
-6
lines changed

lib/build.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
const fs = require('fs-extra');
2121
const path = require('path');
2222
const events = require('cordova-common').events;
23-
const { deepMerge } = require('./util');
23+
const { deepMerge, getInstalledElectronVersion } = require('./util');
2424

2525
const PLATFORM_MAPPING = {
2626
linux: 'linux',
@@ -321,14 +321,16 @@ class ElectronBuilder {
321321
injectProjectConfigToBuildSettings () {
322322
// const isDevelopment = false;
323323
const packageJson = require(path.join(this.api.locations.www, 'package.json'));
324+
324325
const userConfig = {
325326
APP_ID: packageJson.name,
326327
APP_TITLE: packageJson.displayName,
327328
APP_INSTALLER_ICON: 'installer.png',
328329
APP_BUILD_DIR: this.api.locations.build,
329330
APP_BUILD_RES_DIR: this.api.locations.buildRes,
330331
APP_WWW_DIR: this.api.locations.www,
331-
BUILD_TYPE: this.isDevelopment ? 'development' : 'distribution'
332+
BUILD_TYPE: this.isDevelopment ? 'development' : 'distribution',
333+
ELECTRON_INSTALLED_VERSION: getInstalledElectronVersion()
332334
};
333335

334336
// convert to string for string replacement

lib/build/base.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
"buildResources": "${APP_BUILD_RES_DIR}",
99
"output": "${APP_BUILD_DIR}"
1010
},
11-
"electronVersion": "14.2.9",
11+
"electronVersion": "${ELECTRON_INSTALLED_VERSION}",
1212

1313
"electronDownload": {
14-
"version": "14.2.9"
14+
"version": "${ELECTRON_INSTALLED_VERSION}"
1515
}
1616
}
1717
}

lib/util.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,12 @@ module.exports.getPackageJson = () => {
5656

5757
return _packageJson;
5858
};
59+
60+
/**
61+
* Gets the installed Electron version from the Electron dependency package.json file.
62+
*
63+
* @return {String} version of installed Electron dependency
64+
*/
65+
module.exports.getInstalledElectronVersion = () => {
66+
return require('electron/package.json').version;
67+
};

tests/spec/unit/lib/build.spec.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,17 @@ describe('Testing build.js:', () => {
140140
const buildOptions = { debug: true, buildConfig, argv: [] };
141141

142142
// create spies
143+
const getInstalledElectronVersionSpy = jasmine.createSpy('getInstalledElectronVersion').and.returnValue('1.33.7');
143144
existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(true);
144145
requireSpy = jasmine.createSpy('require').and.returnValue(buildConfig);
145146
build.__set__('fs', { existsSync: existsSyncSpy });
146-
build.__set__({ require: requireSpy });
147+
build.__set__({ require: requireSpy, getInstalledElectronVersion: getInstalledElectronVersionSpy });
147148

148149
electronBuilder = new ElectronBuilder(buildOptions, api).configure();
149150

150151
expect(existsSyncSpy).toHaveBeenCalled();
151152
expect(requireSpy).toHaveBeenCalled();
153+
expect(getInstalledElectronVersionSpy).toHaveBeenCalled();
152154
expect(electronBuilder.buildSettings).toEqual(buildConfig);
153155
});
154156

@@ -167,15 +169,17 @@ describe('Testing build.js:', () => {
167169
const buildOptions = { debug: false, buildConfig, argv: [] };
168170

169171
// create spies
172+
const getInstalledElectronVersionSpy = jasmine.createSpy('getInstalledElectronVersion').and.returnValue('1.33.7');
170173
existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(true);
171174
requireSpy = jasmine.createSpy('require').and.returnValue(buildConfig);
172175
build.__set__('fs', { existsSync: existsSyncSpy });
173-
build.__set__({ require: requireSpy });
176+
build.__set__({ require: requireSpy, getInstalledElectronVersion: getInstalledElectronVersionSpy });
174177

175178
electronBuilder = new ElectronBuilder(buildOptions, api).configure();
176179

177180
expect(existsSyncSpy).toHaveBeenCalled();
178181
expect(requireSpy).toHaveBeenCalled();
182+
expect(getInstalledElectronVersionSpy).toHaveBeenCalled();
179183
expect(electronBuilder.buildSettings).toEqual(buildConfig);
180184
});
181185

tests/spec/unit/lib/util.spec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,13 @@ describe('Testing util.js:', () => {
5555
expect({}.hoge).toBe(undefined);
5656
});
5757
});
58+
59+
describe('getInstalledElectronVersion method', () => {
60+
it('should have a version', () => {
61+
const actual = util.getInstalledElectronVersion();
62+
63+
expect(actual).not.toBe(null);
64+
expect(actual).not.toBe(undefined);
65+
});
66+
});
5867
});

0 commit comments

Comments
 (0)