|
1 | 1 | #!/usr/bin/env node |
2 | | -const { join } = require('path'); |
3 | | -const { spawn } = require('child_process'); |
4 | | -const electronPath = require('electron'); |
| 2 | +const { join } = require('path') |
| 3 | +const { spawn } = require('child_process') |
5 | 4 |
|
6 | | -const appPath = join(__dirname, 'build', 'main-bundle.js'); |
| 5 | +const { execSync } = require('child_process') |
| 6 | +const fs = require('fs/promises') |
7 | 7 |
|
8 | | -const electronProcess = spawn(electronPath, [appPath]); |
9 | | -electronProcess.stdout.on('data', (data) => process.stdout.write(data)); |
10 | | -electronProcess.stderr.on('data', (data) => process.stderr.write(data)); |
11 | | -electronProcess.on('close', (code) => process.exit(code)); |
| 8 | +async function installElectron() { |
| 9 | + // Read package.json |
| 10 | + const packageJson = JSON.parse(fs.readFile('package.json', 'utf8')) |
| 11 | + // Get the Electron version from package.json |
| 12 | + const electronVersion = packageJson.devDependencies.electron |
| 13 | + // Install Electron |
| 14 | + console.log(`Installing Electron ${electronVersion}...`) |
| 15 | + execSync(`npm i electron@${electronVersion}`, { stdio: 'inherit' }) |
| 16 | + console.log('Electron installed successfully.') |
| 17 | +} |
| 18 | + |
| 19 | +const main = async () => { |
| 20 | + let electronPath |
| 21 | + try { |
| 22 | + electronPath = require('electron') |
| 23 | + } catch (e) { |
| 24 | + await installElectron() |
| 25 | + } |
| 26 | + electronPath = require('electron') |
| 27 | + const appPath = join(__dirname, 'build', 'main-bundle.js') |
| 28 | + const electronProcess = spawn(electronPath, [appPath]) |
| 29 | + electronProcess.stdout.on('data', (data) => process.stdout.write(data)) |
| 30 | + electronProcess.stderr.on('data', (data) => process.stderr.write(data)) |
| 31 | + electronProcess.on('close', (code) => process.exit(code)) |
| 32 | +} |
| 33 | + |
| 34 | +main() |
0 commit comments