diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts index 98c332e3226..64f43b748df 100755 --- a/packages/opencode/script/build.ts +++ b/packages/opencode/script/build.ts @@ -16,6 +16,7 @@ import pkg from "../package.json" import { Script } from "@opencode-ai/script" const singleFlag = process.argv.includes("--single") +const skipInstall = process.argv.includes("--skip-install") const allTargets: { os: string @@ -83,8 +84,10 @@ const targets = singleFlag await $`rm -rf dist` const binaries: Record = {} -await $`bun install --os="*" --cpu="*" @opentui/core@${pkg.dependencies["@opentui/core"]}` -await $`bun install --os="*" --cpu="*" @parcel/watcher@${pkg.dependencies["@parcel/watcher"]}` +if (!skipInstall) { + await $`bun install --os="*" --cpu="*" @opentui/core@${pkg.dependencies["@opentui/core"]}` + await $`bun install --os="*" --cpu="*" @parcel/watcher@${pkg.dependencies["@parcel/watcher"]}` +} for (const item of targets) { const name = [ pkg.name, @@ -102,6 +105,10 @@ for (const item of targets) { const parserWorker = fs.realpathSync(path.resolve(dir, "./node_modules/@opentui/core/parser.worker.js")) const workerPath = "./src/cli/cmd/tui/worker.ts" + // Use platform-specific bunfs root path based on target OS + const bunfsRoot = item.os === "win32" ? "B:/~BUN/root/" : "/$bunfs/root/" + const workerRelativePath = path.relative(dir, parserWorker).replaceAll("\\", "/") + await Bun.build({ conditions: ["browser"], tsconfig: "./tsconfig.json", @@ -118,7 +125,7 @@ for (const item of targets) { entrypoints: ["./src/index.ts", parserWorker, workerPath], define: { OPENCODE_VERSION: `'${Script.version}'`, - OTUI_TREE_SITTER_WORKER_PATH: "/$bunfs/root/" + path.relative(dir, parserWorker).replaceAll("\\", "/"), + OTUI_TREE_SITTER_WORKER_PATH: bunfsRoot + workerRelativePath, OPENCODE_WORKER_PATH: workerPath, OPENCODE_CHANNEL: `'${Script.channel}'`, },