core: prevent UI imports compiling TSX source
This commit is contained in:
parent
f8ceb30b43
commit
eeb5b1d8bc
4 changed files with 58 additions and 2 deletions
40
packages/ui/script/pack.ts
Normal file
40
packages/ui/script/pack.ts
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env bun
|
||||
|
||||
import { $ } from "bun"
|
||||
import { rm } from "node:fs/promises"
|
||||
import path from "node:path"
|
||||
|
||||
export async function pack() {
|
||||
const original = await Bun.file("package.json").text()
|
||||
const pkg = JSON.parse(original) as {
|
||||
name: string
|
||||
version: string
|
||||
exports: Record<string, string | { types: string; import: string }>
|
||||
}
|
||||
const tarball = path.resolve(`${pkg.name.replace("@", "").replace("/", "-")}-${pkg.version}.tgz`)
|
||||
|
||||
await $`bun run build`
|
||||
pkg.exports = Object.fromEntries(
|
||||
Object.entries(pkg.exports).map(([key, value]) => {
|
||||
if (typeof value !== "string" || (!value.endsWith(".ts") && !value.endsWith(".tsx"))) return [key, value]
|
||||
return [
|
||||
key,
|
||||
{
|
||||
types: value.replace("./src/", "./dist/").replace(/\.tsx?$/, ".d.ts"),
|
||||
import: value,
|
||||
},
|
||||
]
|
||||
}),
|
||||
)
|
||||
|
||||
await rm(tarball, { force: true })
|
||||
await Bun.write("package.json", JSON.stringify(pkg, null, 2) + "\n")
|
||||
try {
|
||||
await $`bun pm pack`
|
||||
return tarball
|
||||
} finally {
|
||||
await Bun.write("package.json", original)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.main) console.log(await pack())
|
||||
|
|
@ -4,6 +4,7 @@ import { Script } from "@opencode-ai/script"
|
|||
import { $ } from "bun"
|
||||
import { rm } from "node:fs/promises"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import { pack } from "./pack"
|
||||
|
||||
process.chdir(fileURLToPath(new URL("..", import.meta.url)))
|
||||
|
||||
|
|
@ -18,8 +19,7 @@ if ((await $`npm view ${pkg.name}@${pkg.version} version`.nothrow()).exitCode ==
|
|||
try {
|
||||
await $`bun run typecheck`
|
||||
await $`bun run test`
|
||||
await rm(tarball, { force: true })
|
||||
await $`bun pm pack`
|
||||
await pack()
|
||||
await $`npm publish ${tarball} --access public --tag ${Script.channel}`
|
||||
} finally {
|
||||
await rm(tarball, { force: true })
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue