electron: bundle node-pty properly (#21148)
parent
b797a14857
commit
eb30104732
|
|
@ -71,7 +71,8 @@
|
||||||
"@solidjs/router": "0.15.4",
|
"@solidjs/router": "0.15.4",
|
||||||
"@solidjs/start": "https://pkg.pr.new/@solidjs/start@dfb2020",
|
"@solidjs/start": "https://pkg.pr.new/@solidjs/start@dfb2020",
|
||||||
"solid-js": "1.9.10",
|
"solid-js": "1.9.10",
|
||||||
"vite-plugin-solid": "2.11.10"
|
"vite-plugin-solid": "2.11.10",
|
||||||
|
"@lydell/node-pty": "1.2.0-beta.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ const channel = (() => {
|
||||||
|
|
||||||
const OPENCODE_SERVER_DIST = "../opencode/dist/node"
|
const OPENCODE_SERVER_DIST = "../opencode/dist/node"
|
||||||
|
|
||||||
|
const nodePtyPkg = `@lydell/node-pty-${process.platform}-${process.arch}`
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
main: {
|
main: {
|
||||||
define: {
|
define: {
|
||||||
|
|
@ -19,8 +21,16 @@ export default defineConfig({
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
input: { index: "src/main/index.ts" },
|
input: { index: "src/main/index.ts" },
|
||||||
},
|
},
|
||||||
|
externalizeDeps: { include: [nodePtyPkg] },
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
|
{
|
||||||
|
name: "opencode:node-pty-narrower",
|
||||||
|
enforce: "pre",
|
||||||
|
resolveId(s) {
|
||||||
|
if (s === "@lydell/node-pty") return nodePtyPkg
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "opencode:virtual-server-module",
|
name: "opencode:virtual-server-module",
|
||||||
enforce: "pre",
|
enforce: "pre",
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
"typecheck": "tsgo -b",
|
"typecheck": "tsgo -b",
|
||||||
"predev": "bun ./scripts/predev.ts",
|
"predev": "bun ./scripts/predev.ts",
|
||||||
"dev": "electron-vite dev",
|
"dev": "electron-vite dev",
|
||||||
"prebuild": "bun ./scripts/copy-icons.ts",
|
"prebuild": "bun ./scripts/prebuild.ts",
|
||||||
"build": "electron-vite build",
|
"build": "electron-vite build",
|
||||||
"preview": "electron-vite preview",
|
"preview": "electron-vite preview",
|
||||||
"package": "electron-builder --config electron-builder.config.ts",
|
"package": "electron-builder --config electron-builder.config.ts",
|
||||||
|
|
@ -45,6 +45,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@actions/artifact": "4.0.0",
|
"@actions/artifact": "4.0.0",
|
||||||
|
"@lydell/node-pty": "catalog:",
|
||||||
"@types/bun": "catalog:",
|
"@types/bun": "catalog:",
|
||||||
"@types/node": "catalog:",
|
"@types/node": "catalog:",
|
||||||
"@typescript/native-preview": "catalog:",
|
"@typescript/native-preview": "catalog:",
|
||||||
|
|
@ -53,5 +54,13 @@
|
||||||
"electron-vite": "^5",
|
"electron-vite": "^5",
|
||||||
"typescript": "~5.6.2",
|
"typescript": "~5.6.2",
|
||||||
"vite": "catalog:"
|
"vite": "catalog:"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@lydell/node-pty-darwin-arm64": "1.2.0-beta.10",
|
||||||
|
"@lydell/node-pty-darwin-x64": "1.2.0-beta.10",
|
||||||
|
"@lydell/node-pty-linux-arm64": "1.2.0-beta.10",
|
||||||
|
"@lydell/node-pty-linux-x64": "1.2.0-beta.10",
|
||||||
|
"@lydell/node-pty-win32-arm64": "1.2.0-beta.10",
|
||||||
|
"@lydell/node-pty-win32-x64": "1.2.0-beta.10"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env bun
|
||||||
|
import { $ } from "bun"
|
||||||
|
|
||||||
|
import { resolveChannel } from "./utils"
|
||||||
|
|
||||||
|
const channel = resolveChannel()
|
||||||
|
await $`bun ./scripts/copy-icons.ts ${channel}`
|
||||||
|
|
||||||
|
await $`cd ../opencode && bun script/build-node.ts`
|
||||||
|
|
@ -1,15 +1,9 @@
|
||||||
#!/usr/bin/env bun
|
#!/usr/bin/env bun
|
||||||
import { $ } from "bun"
|
|
||||||
|
|
||||||
import { Script } from "@opencode-ai/script"
|
import { Script } from "@opencode-ai/script"
|
||||||
import { resolveChannel } from "./utils"
|
|
||||||
|
|
||||||
const channel = resolveChannel()
|
await import("./prebuild")
|
||||||
await $`bun ./scripts/copy-icons.ts ${channel}`
|
|
||||||
|
|
||||||
const pkg = await Bun.file("./package.json").json()
|
const pkg = await Bun.file("./package.json").json()
|
||||||
pkg.version = Script.version
|
pkg.version = Script.version
|
||||||
await Bun.write("./package.json", JSON.stringify(pkg, null, 2) + "\n")
|
await Bun.write("./package.json", JSON.stringify(pkg, null, 2) + "\n")
|
||||||
console.log(`Updated package.json version to ${Script.version}`)
|
console.log(`Updated package.json version to ${Script.version}`)
|
||||||
|
|
||||||
await $`cd ../opencode && bun script/build-node.ts`
|
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
"@hono/node-ws": "1.3.0",
|
"@hono/node-ws": "1.3.0",
|
||||||
"@hono/standard-validator": "0.1.5",
|
"@hono/standard-validator": "0.1.5",
|
||||||
"@hono/zod-validator": "catalog:",
|
"@hono/zod-validator": "catalog:",
|
||||||
"@lydell/node-pty": "1.2.0-beta.10",
|
"@lydell/node-pty": "catalog:",
|
||||||
"@modelcontextprotocol/sdk": "1.27.1",
|
"@modelcontextprotocol/sdk": "1.27.1",
|
||||||
"@npmcli/arborist": "9.4.0",
|
"@npmcli/arborist": "9.4.0",
|
||||||
"@octokit/graphql": "9.0.2",
|
"@octokit/graphql": "9.0.2",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/env bun
|
#!/usr/bin/env bun
|
||||||
|
|
||||||
import { $ } from "bun"
|
|
||||||
import { Script } from "@opencode-ai/script"
|
import { Script } from "@opencode-ai/script"
|
||||||
import fs from "fs"
|
import fs from "fs"
|
||||||
import path from "path"
|
import path from "path"
|
||||||
|
|
@ -9,15 +8,6 @@ import { fileURLToPath } from "url"
|
||||||
const __filename = fileURLToPath(import.meta.url)
|
const __filename = fileURLToPath(import.meta.url)
|
||||||
const __dirname = path.dirname(__filename)
|
const __dirname = path.dirname(__filename)
|
||||||
const dir = path.resolve(__dirname, "..")
|
const dir = path.resolve(__dirname, "..")
|
||||||
const root = path.resolve(dir, "../..")
|
|
||||||
|
|
||||||
function linker(): "hoisted" | "isolated" {
|
|
||||||
// jsonc-parser is only declared in packages/opencode, so its install location
|
|
||||||
// tells us whether Bun used a hoisted or isolated workspace layout.
|
|
||||||
if (fs.existsSync(path.join(dir, "node_modules", "jsonc-parser"))) return "isolated"
|
|
||||||
if (fs.existsSync(path.join(root, "node_modules", "jsonc-parser"))) return "hoisted"
|
|
||||||
throw new Error("Could not detect Bun linker from jsonc-parser")
|
|
||||||
}
|
|
||||||
|
|
||||||
process.chdir(dir)
|
process.chdir(dir)
|
||||||
|
|
||||||
|
|
@ -51,17 +41,13 @@ const migrations = await Promise.all(
|
||||||
)
|
)
|
||||||
console.log(`Loaded ${migrations.length} migrations`)
|
console.log(`Loaded ${migrations.length} migrations`)
|
||||||
|
|
||||||
const link = linker()
|
|
||||||
|
|
||||||
await $`bun install --linker=${link} --os="*" --cpu="*" @lydell/node-pty@1.2.0-beta.10`
|
|
||||||
|
|
||||||
await Bun.build({
|
await Bun.build({
|
||||||
target: "node",
|
target: "node",
|
||||||
entrypoints: ["./src/node.ts"],
|
entrypoints: ["./src/node.ts"],
|
||||||
outdir: "./dist/node",
|
outdir: "./dist/node",
|
||||||
format: "esm",
|
format: "esm",
|
||||||
sourcemap: "linked",
|
sourcemap: "linked",
|
||||||
external: ["jsonc-parser"],
|
external: ["jsonc-parser", "@lydell/node-pty"],
|
||||||
define: {
|
define: {
|
||||||
OPENCODE_MIGRATIONS: JSON.stringify(migrations),
|
OPENCODE_MIGRATIONS: JSON.stringify(migrations),
|
||||||
OPENCODE_CHANNEL: `'${Script.channel}'`,
|
OPENCODE_CHANNEL: `'${Script.channel}'`,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue