44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import solidPlugin from "@opentui/solid/bun-plugin"
|
|
import { copyFileSync, existsSync, mkdirSync } from "node:fs"
|
|
import { join, dirname } from "node:path"
|
|
|
|
// Build the JavaScript bundle
|
|
await Bun.build({
|
|
entrypoints: ["./src/index.tsx"],
|
|
outdir: "./dist",
|
|
target: "bun",
|
|
minify: true,
|
|
sourcemap: "external",
|
|
plugins: [solidPlugin],
|
|
})
|
|
|
|
// Copy the native library to dist for distribution
|
|
const platform = process.platform
|
|
const arch = process.arch
|
|
|
|
// Map platform/arch to OpenTUI package names
|
|
const platformMap: Record<string, string> = {
|
|
"darwin-arm64": "darwin-arm64",
|
|
"darwin-x64": "darwin-x64",
|
|
"linux-x64": "linux-x64",
|
|
"linux-arm64": "linux-arm64",
|
|
"win32-x64": "win32-x64",
|
|
"win32-arm64": "win32-arm64",
|
|
}
|
|
|
|
const platformKey = `${platform}-${arch}`
|
|
const platformPkg = platformMap[platformKey]
|
|
|
|
if (platformPkg) {
|
|
const libName = platform === "win32" ? "opentui.dll" : "libopentui.dylib"
|
|
const srcPath = join("node_modules", `@opentui/core-${platformPkg}`, libName)
|
|
|
|
if (existsSync(srcPath)) {
|
|
const destPath = join("dist", libName)
|
|
copyFileSync(srcPath, destPath)
|
|
console.log(`Copied native library: ${libName}`)
|
|
}
|
|
}
|
|
|
|
console.log("Build complete")
|