77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
import * as esbuild from "esbuild";
|
|
import { execSync } from "child_process";
|
|
import { cpSync, rmSync, mkdirSync, writeFileSync, readFileSync } from "fs";
|
|
|
|
// Clean dist
|
|
rmSync("dist", { recursive: true, force: true });
|
|
mkdirSync("dist/server", { recursive: true });
|
|
mkdirSync("dist/ui", { recursive: true });
|
|
|
|
const shared = {
|
|
bundle: true,
|
|
sourcemap: true,
|
|
minify: false,
|
|
};
|
|
|
|
// Build all formats in parallel
|
|
await Promise.all([
|
|
// Server ESM
|
|
esbuild.build({
|
|
...shared,
|
|
entryPoints: ["server/index.ts"],
|
|
outfile: "dist/server/index.js",
|
|
format: "esm",
|
|
platform: "node",
|
|
target: "node18",
|
|
external: ["@mcp-ui/server", "esbuild"],
|
|
}),
|
|
// Server CJS
|
|
esbuild.build({
|
|
...shared,
|
|
entryPoints: ["server/index.ts"],
|
|
outfile: "dist/server/index.cjs",
|
|
format: "cjs",
|
|
platform: "node",
|
|
target: "node18",
|
|
external: ["@mcp-ui/server", "esbuild"],
|
|
}),
|
|
// UI ESM
|
|
esbuild.build({
|
|
...shared,
|
|
entryPoints: ["ui/index.ts"],
|
|
outfile: "dist/ui/index.js",
|
|
format: "esm",
|
|
platform: "browser",
|
|
target: "es2020",
|
|
external: ["react", "react-dom"],
|
|
}),
|
|
// UI CJS
|
|
esbuild.build({
|
|
...shared,
|
|
entryPoints: ["ui/index.ts"],
|
|
outfile: "dist/ui/index.cjs",
|
|
format: "cjs",
|
|
platform: "browser",
|
|
target: "es2020",
|
|
external: ["react", "react-dom"],
|
|
}),
|
|
]);
|
|
|
|
console.log("✅ JS builds complete");
|
|
|
|
// Generate TypeScript declarations
|
|
execSync("tsc -p tsconfig.build.json", { stdio: "inherit" });
|
|
|
|
// Copy .d.ts to .d.cts for CJS compatibility
|
|
cpSync("dist/server/index.d.ts", "dist/server/index.d.cts");
|
|
cpSync("dist/ui/index.d.ts", "dist/ui/index.d.cts");
|
|
|
|
// Remove internal declaration files (bundle, html)
|
|
rmSync("dist/server/bundle.d.ts", { force: true });
|
|
rmSync("dist/server/bundle.d.ts.map", { force: true });
|
|
rmSync("dist/server/html.d.ts", { force: true });
|
|
rmSync("dist/server/html.d.ts.map", { force: true });
|
|
|
|
console.log("✅ Type declarations complete");
|
|
console.log("✅ Build complete");
|