diff --git a/gulpfile.babel.js b/gulpfile.babel.js index f7da019f0..01d2cedb5 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -7,6 +7,7 @@ const builder = require('electron-builder') const nib = require('nib') const notifier = require('node-notifier') +const os = require('os') const fs = require("fs-promise"); const {join} = require("path"); const {spawn, spawnSync} = require("child_process"); @@ -28,6 +29,7 @@ const paths = { binary : join(__dirname, "./release/"), }; +const isWindows = os.type() === 'Windows_NT' const DELIR_ENV = process.env.DELIR_ENV export function buildBrowserJs() { @@ -325,34 +327,36 @@ export function copyImage() { export function makeIcon() { return new Promise((resolve, reject) => { - const bin = join(__dirname, 'node_modules/.bin/electron-icon-maker') + const binName = isWindows ? 'electron-icon-maker.cmd' : 'electron-icon-maker' + const binPath = join(__dirname, 'node_modules/.bin/', binName) const source = join(__dirname, 'build-assets/icon.png') - const iconMaker = spawn(bin, [`--input=${source}`, `--output=./build-assets`]); - iconMaker.on('close', (code) => { - code === 0 ? resolve() : reject() - }) + const iconMaker = spawn(binPath, [`--input=${source}`, `--output=./build-assets`]); + iconMaker + .on('error', err => reject(err)) + .on('close', (code, signal) => code === 0 ? resolve() : reject(new Error(signal))) }) } export async function pack(done) { const pjson = require("./package.json"); + const yarnBin = isWindows ? 'yarn.cmd' : 'yarn' await rimraf(join(paths.build, 'node_modules')) await new Promise((resolve, reject) => { - spawn('yarn', ['install'], {cwd: paths.build}).on('close', code => code === 0 ? resolve() : reject()) + spawn(yarnBin, ['install'], {cwd: paths.build}) + .on('error', err => reject(err)) + .on('close', (code, signal) => code === 0 ? resolve() : reject(new Error(signal))) }) const targets = [ - builder.Platform.MAC.createTarget(), + ...(!isWindows ? [builder.Platform.MAC.createTarget()] : []), builder.Platform.WINDOWS.createTarget(), // ...builder.Platform.LINUX.createTarget(), ] for (const target of targets) { - - await builder.build({ // targets: builder.Platform.MAC.createTarget(), targets: target, diff --git a/package.json b/package.json index e32c4723d..91255b6a6 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "babel-preset-flow": "^6.23.0", "babel-preset-react": "^6.24.1", "clean-webpack-plugin": "^0.1.16", + "cross-env": "^4.0.0", "css-loader": "^0.28.0", "devtron": "^1.4.0", "electron": "^1.6.6", diff --git a/yarn.lock b/yarn.lock index d1eb115a6..847ead7ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1593,6 +1593,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.2: create-hash "^1.1.0" inherits "^2.0.1" +cross-env@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-4.0.0.tgz#16083862d08275a4628b0b243b121bedaa55dd80" + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + cross-spawn-async@^2.1.1: version "2.2.5" resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" @@ -1600,6 +1607,14 @@ cross-spawn-async@^2.1.1: lru-cache "^4.0.0" which "^1.2.8" +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-unzip@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/cross-unzip/-/cross-unzip-0.0.2.tgz#5183bc47a09559befcf98cc4657964999359372f" @@ -3301,6 +3316,10 @@ is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" +is-windows@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -3805,7 +3824,7 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" -lru-cache@^4.0.0: +lru-cache@^4.0.0, lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: @@ -5381,6 +5400,16 @@ sha.js@^2.3.6: dependencies: inherits "^2.0.1" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + shellwords@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" @@ -6224,7 +6253,7 @@ which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" -which@1, which@^1.2.11, which@^1.2.12, which@^1.2.8, which@~1.2.10: +which@1, which@^1.2.11, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@~1.2.10: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: