diff --git a/package.json b/package.json index b0ed53456d..e7d6ef28bd 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "lint:fix": "prettier --write .", "test": "xvfb-maybe cross-env TS_NODE_PROJECT='./tsconfig.test.json' TS_NODE_FILES=1 mocha './tools/test-globber.ts'", "test:fast": "xvfb-maybe cross-env TS_NODE_PROJECT='./tsconfig.test.json' TEST_FAST_ONLY=1 TS_NODE_FILES=1 mocha './tools/test-globber.ts'", - "preinstall": "npx mkdirp packages/api/cli/dist && npx mkdirp packages/external/create-electron-app/dist && touch packages/api/cli/dist/electron-forge.js && touch packages/external/create-electron-app/dist/index.js", + "preinstall": "node ./tools/maybe-shim-windows.js", "postinstall": "rimraf node_modules/.bin/*.ps1 && ts-node ./tools/gen-tsconfigs.ts && ts-node ./tools/gen-ts-glue.ts", "prepare": "husky install" }, diff --git a/tools/maybe-shim-windows.js b/tools/maybe-shim-windows.js new file mode 100644 index 0000000000..b09256f222 --- /dev/null +++ b/tools/maybe-shim-windows.js @@ -0,0 +1,27 @@ +const cp = require('child_process'); + +/* + * Adds a shim to fix Windows symlinking with create-electron-app. + * Should run on Windows only. + * More details: https://github.com/boltpkg/bolt/issues/207 + */ +async function spawnProcess(cmd, shimPath) { + const child = cp.spawn('npx', [cmd, shimPath], { + stdio: 'inherit', + }); + child.on('exit', (code) => process.exit(code)); +} + +async function main() { + spawnProcess('mkdirp', '../packages/api/cli/dist'); + spawnProcess('mkdirp', '../packages/external/create-electron-app'); + spawnProcess('touch', '../packages/api/cli/dist/electron-forge.js'); + spawnProcess('touch', '../packages/external/create-electron-app/dist/index.js'); +} + +if (process.platform === 'win32') { + main().catch((err) => { + console.error(err); + process.exit(1); + }); +}