feat: script/dev.ts
This commit is contained in:
parent
a889da2dba
commit
3210954fac
|
@ -1,34 +1,14 @@
|
||||||
import { join, relative } from 'path'
|
import { join, relative } from 'path'
|
||||||
import { readdirSync } from 'fs'
|
import { rollup, RollupOptions, OutputOptions, RollupOutput } from 'rollup'
|
||||||
import { OutputOptions, rollup, RollupOptions, RollupOutput, RollupError } from 'rollup'
|
|
||||||
import { build as viteBuild2 } from 'vite'
|
import { build as viteBuild2 } from 'vite'
|
||||||
import { optionsFactory } from './rollup.config'
|
import {
|
||||||
|
mainOptions,
|
||||||
export type BuildResult = [RollupError | null, RollupOutput | null]
|
preloadOptions,
|
||||||
|
BuildResult,
|
||||||
|
} from './utils'
|
||||||
|
|
||||||
const TAG = '[build.ts]'
|
const TAG = '[build.ts]'
|
||||||
|
|
||||||
function mainOptions() {
|
|
||||||
return optionsFactory({
|
|
||||||
input: join(__dirname, '../main/index.ts'),
|
|
||||||
output: {
|
|
||||||
dir: 'dist/main',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function preloadOptions() {
|
|
||||||
const dirs = readdirSync(join(__dirname, '../preload'))
|
|
||||||
const inputs = dirs.filter(name => /^index\..+\.ts$/.test(name))
|
|
||||||
|
|
||||||
return optionsFactory({
|
|
||||||
input: inputs.map(input => join(__dirname, '../preload', input)),
|
|
||||||
output: {
|
|
||||||
dir: 'dist/preload',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// build main、preload
|
// build main、preload
|
||||||
async function rollupBuild(options: RollupOptions): Promise<BuildResult> {
|
async function rollupBuild(options: RollupOptions): Promise<BuildResult> {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
import { join } from 'path'
|
||||||
|
import { spawn, ChildProcess } from 'child_process'
|
||||||
|
import electron from 'electron'
|
||||||
|
import { RollupWatcher, RollupWatcherEvent, watch } from 'rollup'
|
||||||
|
import { createServer as createViteServer } from 'vite'
|
||||||
|
import pkg from '../package.json'
|
||||||
|
import {
|
||||||
|
mainOptions,
|
||||||
|
preloadOptions,
|
||||||
|
} from './utils'
|
||||||
|
|
||||||
|
const TAG = '[dev.ts]'
|
||||||
|
|
||||||
|
function eventHandle(ev: RollupWatcherEvent) {
|
||||||
|
if (ev.code === 'ERROR') {
|
||||||
|
console.error(TAG, ev.error)
|
||||||
|
} else if (ev.code === 'BUNDLE_START') {
|
||||||
|
console.log(TAG, `Rebuild start - ${ev.output}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchMain(): RollupWatcher {
|
||||||
|
let electronProcess: ChildProcess | null = null
|
||||||
|
|
||||||
|
return watch(mainOptions())
|
||||||
|
.on('event', ev => {
|
||||||
|
if (ev.code === 'END') {
|
||||||
|
electronProcess && electronProcess.kill()
|
||||||
|
electronProcess = spawn(
|
||||||
|
electron as unknown as string,
|
||||||
|
[join(__dirname, '..', pkg.main)],
|
||||||
|
{ stdio: 'inherit', env: Object.assign(process.env, pkg.env) },
|
||||||
|
)
|
||||||
|
} else if (ev.code === 'ERROR') {
|
||||||
|
electronProcess && electronProcess.kill()
|
||||||
|
electronProcess = null
|
||||||
|
}
|
||||||
|
|
||||||
|
eventHandle(ev)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchPreload(): RollupWatcher {
|
||||||
|
return watch(preloadOptions())
|
||||||
|
.on('event', ev => {
|
||||||
|
if (ev.code === 'END') {
|
||||||
|
// TODO Hot reload
|
||||||
|
}
|
||||||
|
|
||||||
|
eventHandle(ev)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
; (async () => {
|
||||||
|
try {
|
||||||
|
const server = await (await createViteServer({
|
||||||
|
root: join(__dirname, '../react-ts'),
|
||||||
|
configFile: join(__dirname, '../react-ts/vite.config.ts'),
|
||||||
|
})).listen()
|
||||||
|
const { host = '127.0.0.1', port = 3000 } = server.config.server
|
||||||
|
|
||||||
|
console.log(TAG, `Server run at - http://${host}:${port}`)
|
||||||
|
|
||||||
|
watchPreload()
|
||||||
|
watchMain()
|
||||||
|
} catch (error) {
|
||||||
|
console.error(TAG, error)
|
||||||
|
}
|
||||||
|
})();
|
|
@ -1 +1,33 @@
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
import { readdirSync } from 'fs'
|
||||||
|
import { OutputOptions, rollup, RollupOptions, RollupOutput, RollupError } from 'rollup'
|
||||||
|
import { optionsFactory } from './rollup.config'
|
||||||
|
|
||||||
|
export type BuildResult = [RollupError | null, RollupOutput | null]
|
||||||
|
|
||||||
|
function mainOptions(): RollupOptions {
|
||||||
|
return optionsFactory({
|
||||||
|
input: join(__dirname, '../main/index.ts'),
|
||||||
|
output: {
|
||||||
|
dir: 'dist/main',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function preloadOptions(): RollupOptions {
|
||||||
|
const dirs = readdirSync(join(__dirname, '../preload'))
|
||||||
|
const inputs = dirs.filter(name => /^index\..+\.ts$/.test(name))
|
||||||
|
|
||||||
|
return optionsFactory({
|
||||||
|
input: inputs.map(input => join(__dirname, '../preload', input)),
|
||||||
|
output: {
|
||||||
|
dir: 'dist/preload',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
mainOptions,
|
||||||
|
preloadOptions,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue