Skip to content

Commit 34e80e1

Browse files
committed
feat(build,generator): support electron 5.0.0, fixes #250
1 parent 6a5e2fb commit 34e80e1

File tree

7 files changed

+51
-21
lines changed

7 files changed

+51
-21
lines changed

Diff for: __tests__/createProject.helper.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ const createProject = (projectName, useTS, customPlugins = {}) =>
1717
projectName += '-ts'
1818
}
1919
// Install vcp-electron-builder
20-
preset.plugins['vue-cli-plugin-electron-builder'] = {}
20+
preset.plugins['vue-cli-plugin-electron-builder'] = {
21+
electronBuilder: { electronVersion: '^4.0.0' }
22+
}
2123
preset.plugins = { ...preset.plugins, ...customPlugins }
2224
const projectPath = p =>
2325
path.join(process.cwd(), '__tests__/projects/' + projectName, p)

Diff for: __tests__/generator.spec.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ beforeEach(() => {
2222
// Check that utf8 encoding is set
2323
expect(encoding).toBe('utf8')
2424
if (path === 'apiResolve_./package.json') {
25-
return JSON.stringify({ scripts: {} })
25+
return JSON.stringify({
26+
scripts: {},
27+
devDependencies: { electron: '^5.0.0' }
28+
})
2629
}
2730
// return mock content
2831
return 'existing_content'
@@ -73,7 +76,10 @@ describe('.gitignore', () => {
7376
// Check that utf8 encoding is set
7477
expect(encoding).toBe('utf8')
7578
if (path === 'apiResolve_./package.json') {
76-
return JSON.stringify({ scripts: {} })
79+
return JSON.stringify({
80+
scripts: {},
81+
devDependencies: { electron: '^5.0.0' }
82+
})
7783
}
7884
// return mock content
7985
return `ignore-this\n${existing}\nignore-that`

Diff for: generator/index.js

+18-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
const fs = require('fs')
2+
const semver = require('semver')
23

34
module.exports = (api, options = {}) => {
45
if (!options.electronBuilder) options.electronBuilder = {}
6+
const electronVersion = options.electronBuilder.electronVersion
7+
let pkg = fs.readFileSync(api.resolve('./package.json'), 'utf8')
8+
pkg = JSON.parse(pkg)
59
const usesTS = api.hasPlugin('typescript')
610
const hasBackground =
711
fs.existsSync(api.resolve(`./src/background.ts`)) ||
812
fs.existsSync(api.resolve(`./src/background.js`))
13+
914
if (!hasBackground) {
1015
// If user does not have a background file it should be created
11-
api.render('./templates/base')
16+
api.render('./templates/base', {
17+
// Scheme registration changed in Electron 5.0.0
18+
newSchemeRegistrationFunction: semver.gte(
19+
(electronVersion || pkg.devDependencies.electron).replace('^', ''),
20+
'5.0.0'
21+
)
22+
})
1223
}
1324
// Add tests
1425
let testFramework
@@ -44,7 +55,10 @@ module.exports = (api, options = {}) => {
4455
/process\.env\.WEBPACK_DEV_SERVER_URL\s*?\)$/m,
4556
'process.env.WEBPACK_DEV_SERVER_URL as string)'
4657
)
47-
background = background.replace(/let win\s*?$/m, 'let win: BrowserWindow | null')
58+
background = background.replace(
59+
/let win\s*?$/m,
60+
'let win: BrowserWindow | null'
61+
)
4862
fs.writeFileSync(api.resolve('./src/background.ts'), background)
4963
if (api.hasPlugin('router')) {
5064
console.log('\n')
@@ -60,8 +74,6 @@ module.exports = (api, options = {}) => {
6074
'electron:build': 'vue-cli-service electron:build',
6175
'electron:serve': 'vue-cli-service electron:serve'
6276
}
63-
let pkg = fs.readFileSync(api.resolve('./package.json'), 'utf8')
64-
pkg = JSON.parse(pkg)
6577
const addScript = (name, command) => {
6678
// Add on to existing script if it exists
6779
if (pkg.scripts && pkg.scripts[name]) {
@@ -81,9 +93,9 @@ module.exports = (api, options = {}) => {
8193
addScript('postinstall', 'electron-builder install-app-deps')
8294
addScript('postuninstall', 'electron-builder install-app-deps')
8395
const devDependencies = {}
84-
if (options.electronBuilder.electronVersion) {
96+
if (electronVersion) {
8597
// Use provided electron version
86-
devDependencies.electron = options.electronBuilder.electronVersion
98+
devDependencies.electron = electronVersion
8799
}
88100
const dependencies = {}
89101
if (testFramework === 'mocha') {

Diff for: generator/templates/base/src/background.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@ const isDevelopment = process.env.NODE_ENV !== 'production'
1111
// be closed automatically when the JavaScript object is garbage collected.
1212
let win
1313

14-
// Standard scheme must be registered before the app is ready
15-
protocol.registerStandardSchemes(['app'], { secure: true })
14+
// Scheme must be registered before the app is ready
15+
<% if (newSchemeRegistrationFunction) { %>protocol.registerSchemesAsPrivileged([{scheme: 'app', secure: true }])
16+
<% } else { %>protocol.registerStandardSchemes(['app'], { secure: true })
17+
<% } %>
1618
function createWindow () {
1719
// Create the browser window.
18-
win = new BrowserWindow({ width: 800, height: 600 })
20+
win = new BrowserWindow({ width: 800, height: 600, webPreferences: {
21+
nodeIntegration: true
22+
} })
1923

2024
if (process.env.WEBPACK_DEV_SERVER_URL) {
2125
// Load the url of the dev server if in development mode

Diff for: package.json

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"lodash.merge": "^4.6.1",
3737
"portfinder": "^1.0.16",
3838
"pumpify": "^1.5.1",
39+
"semver": "^6.0.0",
3940
"shebang-loader": "^0.0.1",
4041
"spectron": "^5.0.0",
4142
"split2": "^3.0.0",

Diff for: prompts.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@ module.exports = [
55
name: 'electronBuilder.electronVersion',
66
type: 'list',
77
message: 'Choose Electron Version',
8-
default: '^4.0.0',
8+
default: '^5.0.0',
99
choices: [
10-
{
11-
name: '^2.0.0',
12-
value: '^2.0.0',
13-
short: '^2.0.0'
14-
},
1510
{
1611
name: '^3.0.0',
1712
value: '^3.0.0',
@@ -21,6 +16,11 @@ module.exports = [
2116
name: '^4.0.0',
2217
value: '^4.0.0',
2318
short: '^4.0.0'
19+
},
20+
{
21+
name: '^5.0.0',
22+
value: '^5.0.0',
23+
short: '^5.0.0'
2424
}
2525
],
2626
when: () => {

Diff for: yarn.lock

+8-3
Original file line numberDiff line numberDiff line change
@@ -5715,9 +5715,9 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.116, electron-to-chromium
57155715
integrity sha512-NKwKAXzur5vFCZYBHpdWjTMO8QptNLNP80nItkSIgUOapPAo9Uia+RvkCaZJtO7fhQaVElSvBPWEc2ku6cKsPA==
57165716

57175717
electron@^4.0.0:
5718-
version "4.1.0"
5719-
resolved "https://registry.yarnpkg.com/electron/-/electron-4.1.0.tgz#ecba9c83de271e8ba7637332ece9ed023c6ea3f0"
5720-
integrity sha512-q/yTi9dT5UEFK/s+vOQaHNkTHWiRK9kEBYVJt34nmWc9piW42hXT+nhKUEHHhccMPr3q18gG0iPZqeR+LG76ow==
5718+
version "4.1.5"
5719+
resolved "https://registry.yarnpkg.com/electron/-/electron-4.1.5.tgz#d1873147d5be36ab0c8bb9db3a54297a82ee8fef"
5720+
integrity sha512-0VZzUd4vZaUeSLdxJI/XMrMnPN7AROjPFZOiNgZZkYRUUEjGHfaSAbCJyxuXtii52KGhzGL0JgW0q5QmQ3ykKQ==
57215721
dependencies:
57225722
"@types/node" "^10.12.18"
57235723
electron-download "^4.1.0"
@@ -12760,6 +12760,11 @@ [email protected]:
1276012760
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
1276112761
integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
1276212762

12763+
semver@^6.0.0:
12764+
version "6.0.0"
12765+
resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65"
12766+
integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==
12767+
1276312768
1276412769
version "0.16.2"
1276512770
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"

0 commit comments

Comments
 (0)