index.ts 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import { startStudioServer } from "./server.js";
  2. import { resolve, join, dirname } from "node:path";
  3. import { existsSync } from "node:fs";
  4. import { execSync } from "node:child_process";
  5. import { fileURLToPath } from "node:url";
  6. const __dirname = dirname(fileURLToPath(import.meta.url));
  7. const root = resolve(process.argv[2] ?? process.env.INKOS_PROJECT_ROOT ?? process.cwd());
  8. const port = parseInt(process.env.INKOS_STUDIO_PORT ?? "4567", 10);
  9. // Find studio package root (2 levels up from src/api/)
  10. const studioRoot = resolve(__dirname, "../..");
  11. const distDir = join(studioRoot, "dist");
  12. // Auto-build frontend if dist/ doesn't exist
  13. if (!existsSync(join(distDir, "index.html"))) {
  14. console.log("Building frontend...");
  15. try {
  16. execSync("npx vite build", { cwd: studioRoot, stdio: "inherit" });
  17. } catch {
  18. console.error("Failed to build frontend. Run 'cd packages/studio && pnpm build' manually.");
  19. process.exit(1);
  20. }
  21. }
  22. startStudioServer(root, port, { staticDir: distDir }).catch((e) => {
  23. console.error("Failed to start studio:", e);
  24. process.exit(1);
  25. });