forked from BoostIO/BoostNote-App
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dev-electron.ts
85 lines (76 loc) · 1.89 KB
/
dev-electron.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import webpack from 'webpack'
import path from 'path'
import { execFile, ChildProcess } from 'child_process'
import chalk from 'chalk'
const WIN = process.platform === 'win32'
const outputDirPath = path.join(__dirname, '../electron')
const outputFilename = 'index.js'
const outputPath = path.join(outputDirPath, outputFilename)
const electronFileName = WIN ? 'electron.cmd' : 'electron'
const electronFilePath = path.join(
__dirname,
'../node_modules/.bin',
electronFileName
)
const compiler = webpack({
entry: './src/electron/index.ts',
output: {
filename: outputFilename,
path: outputDirPath,
},
mode: 'development',
target: 'electron-main',
module: {
rules: [
{
test: /\.ts$/,
use: [{ loader: 'ts-loader', options: { transpileOnly: true } }],
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.ts', '.js'],
},
externals: {
'electron-log': 'commonjs2 electron-log',
'electron-updater': 'commonjs2 electron-updater',
},
})
function execute() {
const process = execFile(electronFilePath, [outputPath])
process.stdout.on('data', (data) => {
const title = `Electron stdout(pid:${process.pid})`
console.log(
`${chalk.bgBlueBright(`>> ${title}`)}\n${data}${chalk.bgBlueBright(
`<< ${title}`
)}`
)
})
process.stderr.on('data', (data) => {
const title = `Electron stderr(pid:${process.pid})`
console.log(
`${chalk.bgRedBright(`>> ${title}`)}\n${data}${chalk.bgRedBright(
`<< ${title}`
)}`
)
})
return process
}
let electronProcess: ChildProcess | null = null
compiler.watch({}, (err, stats) => {
if (err != null) {
console.error(err)
}
if (stats != null) {
console.log(
stats.toString({
colors: true,
})
)
}
if (electronProcess != null) {
electronProcess.kill('SIGINT')
}
electronProcess = execute()
})