From b54b206b9a98a9fc0561b07023edc1b99dbf1b5f Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Tue, 23 Apr 2019 17:35:07 -0400 Subject: [PATCH] Use programmatic API from Electron-Builder. It seems that the package-json based configuration is deprecated. See https://github.com/electron-userland/electron-builder/issues/3751 --- build.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 65 +++++------------------------------------------ 2 files changed, 78 insertions(+), 59 deletions(-) create mode 100644 build.js diff --git a/build.js b/build.js new file mode 100644 index 0000000..897a693 --- /dev/null +++ b/build.js @@ -0,0 +1,72 @@ +const builder = require('electron-builder') +const Platform = builder.Platform + +function getCurrentPlatform(){ + switch(process.platform){ + case 'win32': + return Platform.WINDOWS + case 'darwin': + return Platform.MAC + case 'linux': + return Platform.linux + default: + console.error('Cannot resolve current platform!') + return undefined + } +} + +builder.build({ + targets: (process.argv[2] != null && Platform[process.argv[2]] != null ? Platform[process.argv[2]] : getCurrentPlatform()).createTarget(), + config: { + appId: 'electronlauncher', + productName: 'Electron Launcher', + artifactName: '${productName}.${ext}', + copyright: 'Copyright © 2018-2019 Daniel Scalzi', + directories: { + buildResources: 'build', + output: 'dist' + }, + win: { + target: [ + { + target: 'nsis', + arch: 'x64' + } + ], + icon: 'build/icon.ico' + }, + nsis: { + oneClick: false, + perMachine: true, + allowElevation: true, + installerIcon: 'build/icon.ico', + uninstallerIcon: 'build/icon.ico', + allowToChangeInstallationDirectory: true + }, + mac: { + target: 'dmg', + category: 'public.app-category.games', + icon: 'build/icon.icns' + }, + linux: { + target: 'AppImage', + maintainer: 'Daniel Scalzi', + vendor: 'Daniel Scalzi', + synopsis: 'Modded Minecraft Launcher', + description: 'Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.', + category: 'Game' + }, + compression: 'maximum', + files: [ + '!{dist,.gitignore,.vscode,docs,dev-app-update.yml,.travis.yml,.nvmrc,.eslintrc.json,build.js}' + ], + extraResources: [ + 'libraries' + ], + asar: true + } +}).then(() => { + console.log('Build complete!') +}).catch(err => { + console.error('Error during build!', err) +}) \ No newline at end of file diff --git a/package.json b/package.json index 954f55c..0a00ee4 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,12 @@ "main": "index.js", "scripts": { "start": "electron .", - "cilinux": "electron-builder --linux --win", - "cidarwin": "electron-builder --mac", - "dist": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true electron-builder", - "dist:win": "npm run dist -- --win --x64", - "dist:mac": "npm run dist -- --mac", - "dist:linux": "npm run dist -- --linux --x64", + "cilinux": "node build.js WINDOWS && node build.js LINUX", + "cidarwin": "node build.js MAC", + "dist": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true node build.js", + "dist:win": "npm run dist -- WINDOWS", + "dist:mac": "npm run dist -- MAC", + "dist:linux": "npm run dist -- LINUX", "lint": "eslint --config .eslintrc.json ." }, "engines": { @@ -48,58 +48,5 @@ "repository": { "type": "git", "url": "git+https://github.com/dscalzi/ElectronLauncher.git" - }, - "build": { - "appId": "electronlauncher", - "productName": "Electron Launcher", - "artifactName": "${productName}.${ext}", - "copyright": "Copyright © 2018-2019 Daniel Scalzi", - "directories": { - "buildResources": "build", - "output": "dist" - }, - "win": { - "target": [ - { - "target": "nsis", - "arch": "x64" - } - ], - "icon": "build/icon.ico" - }, - "nsis": { - "oneClick": false, - "perMachine": true, - "allowElevation": true, - "installerIcon": "build/icon.ico", - "uninstallerIcon": "build/icon.ico", - "allowToChangeInstallationDirectory": true - }, - "mac": { - "target": "dmg", - "category": "public.app-category.games", - "icon": "build/icon.icns" - }, - "linux": { - "target": "AppImage", - "maintainer": "Daniel Scalzi", - "vendor": "Daniel Scalzi", - "synopsis": "Modded Minecraft Launcher", - "description": "Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.", - "category": "Game" - }, - "deb": { - "compression": "xz", - "packageCategory": "Games", - "priority": "optional" - }, - "compression": "maximum", - "files": [ - "!{dist,.gitignore,.vscode,docs,dev-app-update.yml,.travis.yml,.nvmrc,.eslintrc.json}" - ], - "extraResources": [ - "libraries" - ], - "asar": true } }