mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
// scripts/build-web.ts
|
|
// Bundles the browser-side terminal frontend.
|
|
//
|
|
// Usage:
|
|
// bun scripts/build-web.ts # dev build
|
|
// bun scripts/build-web.ts --watch # watch mode
|
|
// bun scripts/build-web.ts --minify # production (minified)
|
|
|
|
import * as esbuild from 'esbuild'
|
|
import { resolve, dirname } from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
const __dir: string =
|
|
(import.meta as any).dir ??
|
|
(import.meta as any).dirname ??
|
|
dirname(fileURLToPath(import.meta.url))
|
|
|
|
const ROOT = resolve(__dir, '..')
|
|
const ENTRY = resolve(ROOT, 'src/server/web/terminal.ts')
|
|
const OUT_DIR = resolve(ROOT, 'src/server/web/public')
|
|
|
|
const watch = process.argv.includes('--watch')
|
|
const minify = process.argv.includes('--minify')
|
|
|
|
const buildOptions: esbuild.BuildOptions = {
|
|
entryPoints: [ENTRY],
|
|
bundle: true,
|
|
platform: 'browser',
|
|
target: ['es2020', 'chrome90', 'firefox90', 'safari14'],
|
|
format: 'esm',
|
|
outdir: OUT_DIR,
|
|
// CSS imported from JS is auto-emitted alongside the JS output
|
|
loader: { '.css': 'css' },
|
|
minify,
|
|
sourcemap: minify ? false : 'inline',
|
|
tsconfig: resolve(ROOT, 'src/server/web/tsconfig.json'),
|
|
logLevel: 'info',
|
|
}
|
|
|
|
async function main() {
|
|
if (watch) {
|
|
const ctx = await esbuild.context(buildOptions)
|
|
await ctx.watch()
|
|
console.log('Watching src/server/web/terminal.ts...')
|
|
} else {
|
|
const start = Date.now()
|
|
const result = await esbuild.build(buildOptions)
|
|
if (result.errors.length > 0) {
|
|
process.exit(1)
|
|
}
|
|
console.log(`Web build complete in ${Date.now() - start}ms → ${OUT_DIR}`)
|
|
}
|
|
}
|
|
|
|
main().catch(err => {
|
|
console.error(err)
|
|
process.exit(1)
|
|
})
|