diff --git a/apps/server/package.json b/apps/server/package.json index 950079a4dc..6f9f33d9aa 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -15,7 +15,7 @@ ], "type": "module", "scripts": { - "dev": "bun run src/bin.ts", + "dev": "tsx src/bin.ts", "build": "node scripts/cli.ts build", "start": "node dist/bin.mjs", "prepare": "effect-language-service patch", @@ -41,6 +41,7 @@ "@types/bun": "catalog:", "@types/node": "catalog:", "tsdown": "catalog:", + "tsx": "^4.20.6", "typescript": "catalog:", "vitest": "catalog:" }, diff --git a/bun.lock b/bun.lock index 0c95792b69..4f15d0cb9e 100644 --- a/bun.lock +++ b/bun.lock @@ -65,6 +65,7 @@ "@types/bun": "catalog:", "@types/node": "catalog:", "tsdown": "catalog:", + "tsx": "^4.20.6", "typescript": "catalog:", "vitest": "catalog:", }, diff --git a/scripts/package-scripts.test.ts b/scripts/package-scripts.test.ts new file mode 100644 index 0000000000..de1a4c7b1c --- /dev/null +++ b/scripts/package-scripts.test.ts @@ -0,0 +1,24 @@ +import { readFileSync } from "node:fs"; +import path from "node:path"; +import { assert, describe, it } from "@effect/vitest"; + +function readPackageScripts(relativePath: string): Record { + const packageJsonPath = path.resolve(import.meta.dirname, "..", relativePath); + const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8")) as { + scripts?: Record; + }; + + return packageJson.scripts ?? {}; +} + +describe("package scripts", () => { + it("uses a Node-compatible TypeScript runner for the server dev script", () => { + const scripts = readPackageScripts("apps/server/package.json"); + + assert.equal( + scripts.dev, + "tsx src/bin.ts", + `apps/server dev script should use the exact Windows-safe runtime entrypoint: ${scripts.dev}`, + ); + }); +});