feat: rewrite of publish to go back to js from binaries (#3)
This commit is contained in:
59
build.js
Normal file
59
build.js
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bun
|
||||
|
||||
/**
|
||||
* Build script for Letta Code CLI
|
||||
* Bundles TypeScript source into a single JavaScript file
|
||||
*/
|
||||
|
||||
import { readFileSync } from "node:fs";
|
||||
import { join, dirname } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
// Read version from package.json
|
||||
const pkg = JSON.parse(readFileSync(join(__dirname, "package.json"), "utf-8"));
|
||||
const version = pkg.version;
|
||||
|
||||
console.log(`📦 Building Letta Code v${version}...`);
|
||||
|
||||
await Bun.build({
|
||||
entrypoints: ["./src/index.ts"],
|
||||
outdir: ".",
|
||||
target: "node",
|
||||
format: "esm",
|
||||
minify: false, // Keep readable for debugging
|
||||
sourcemap: "external",
|
||||
naming: {
|
||||
entry: "letta.js",
|
||||
},
|
||||
define: {
|
||||
"process.env.LETTA_VERSION": JSON.stringify(version),
|
||||
},
|
||||
// Load text files as strings (for markdown, etc.)
|
||||
loader: {
|
||||
".md": "text",
|
||||
".mdx": "text",
|
||||
".txt": "text",
|
||||
},
|
||||
});
|
||||
|
||||
// Add shebang to output file
|
||||
const outputPath = join(__dirname, "letta.js");
|
||||
let content = readFileSync(outputPath, "utf-8");
|
||||
|
||||
// Remove any existing shebang first
|
||||
if (content.startsWith("#!")) {
|
||||
content = content.slice(content.indexOf("\n") + 1);
|
||||
}
|
||||
|
||||
const withShebang = `#!/usr/bin/env node\n${content}`;
|
||||
await Bun.write(outputPath, withShebang);
|
||||
|
||||
// Make executable
|
||||
await Bun.$`chmod +x letta.js`;
|
||||
|
||||
console.log("✅ Build complete!");
|
||||
console.log(` Output: letta.js`);
|
||||
console.log(` Size: ${(await Bun.file(outputPath).size / 1024).toFixed(0)}KB`);
|
||||
Reference in New Issue
Block a user