electron-vite-react/scripts/build.ts

74 lines
1.9 KiB
TypeScript
Raw Normal View History

2021-11-01 19:30:15 +08:00
import { join, relative } from 'path'
2021-11-01 20:57:17 +08:00
import { rollup, RollupOptions, OutputOptions, RollupOutput } from 'rollup'
2021-11-01 19:30:15 +08:00
import { build as viteBuild2 } from 'vite'
2021-11-02 11:15:19 +08:00
import { build as electronBuild2 } from 'electron-builder'
import { config as builderConfig } from './electron-builder.config'
2021-11-01 20:57:17 +08:00
import {
mainOptions,
preloadOptions,
BuildResult,
} from './utils'
2021-11-01 19:30:15 +08:00
2021-11-01 16:50:05 +08:00
const TAG = '[build.ts]'
2021-11-01 19:30:15 +08:00
// build main、preload
async function rollupBuild(options: RollupOptions): Promise<BuildResult> {
2021-11-01 16:50:05 +08:00
try {
const build = await rollup(options)
2021-11-01 19:30:15 +08:00
const optOutput = (options.output || {}) as OutputOptions
const output = await build.write(optOutput)
output.output.forEach(out => {
const relativePath = relative(__dirname, optOutput.dir as string)
console.log(TAG, `Build successful - ${join(relativePath, out.fileName)}`)
})
2021-11-01 16:50:05 +08:00
return [null, output]
} catch (error: any) {
2021-11-01 19:30:15 +08:00
console.error(TAG, 'Build failed:\n', error)
2021-11-01 16:50:05 +08:00
return [error, null]
}
}
2021-11-01 19:30:15 +08:00
// build react-ts
async function buildReactTs(): Promise<BuildResult> {
try {
const output = await viteBuild2({
root: join(__dirname, '../react-ts'),
configFile: join(__dirname, '../react-ts/vite.config.ts'),
}) as RollupOutput
return [null, output]
} catch (error: any) {
return [error, null]
}
}
2021-11-02 11:15:19 +08:00
// build electron
async function electronBuild() {
try {
const result = await electronBuild2({ config: builderConfig })
console.log(TAG, `electron-builder.build result - ${result}`)
return [null, result]
} catch (error) {
return [error, null]
}
}
2021-11-01 19:30:15 +08:00
2021-11-02 11:15:19 +08:00
; (async () => {
2021-11-01 19:30:15 +08:00
console.log(TAG, 'Build with rollup.')
try {
await Promise.all([
2021-11-02 11:15:19 +08:00
// Avoid logs cleaned by vite
2021-11-01 19:30:15 +08:00
rollupBuild(mainOptions()),
rollupBuild(preloadOptions()),
])
await buildReactTs()
2021-11-02 11:15:19 +08:00
await electronBuild()
2021-11-01 19:30:15 +08:00
} catch (error) {
console.error(TAG, error)
process.exit(1)
}
})();