@tasks/database (and @tasks/shared) export raw .ts files via "main" / "exports", which works fine for tsx/dev but blows up at runtime in the production image: ERR_UNKNOWN_FILE_EXTENSION: Unknown file extension ".ts" for /app/packages/database/src/client.ts tsup was leaving those workspace imports as externals in the output, so the deployed dist/index.mjs still tried to resolve them at startup. Switch each app to a tsup.config.ts that sets noExternal: [/^@tasks\\//], which inlines workspace packages into the bundle while keeping node_modules deps (postgres, drizzle-orm, hocuspocus, mcp-sdk, etc.) external. Verified locally: collab-server bundle size goes from 7 KB to 304 KB, confirming @tasks/database is now compiled in. Also fixed the collab start script to point at index.mjs (tsup ESM output) instead of .js. Made-with: Cursor
15 lines
519 B
TypeScript
15 lines
519 B
TypeScript
import { defineConfig } from "tsup";
|
|
|
|
export default defineConfig({
|
|
entry: ["src/index.ts"],
|
|
format: ["esm"],
|
|
dts: true,
|
|
// Bundle workspace packages into the output so the runtime image doesn't try
|
|
// to resolve `@tasks/database` (which exports raw .ts files) at import time —
|
|
// Node 20 cannot load .ts. Third-party deps stay external and are installed
|
|
// via the regular node_modules layer in the runtime image.
|
|
noExternal: [/^@tasks\//],
|
|
target: "node20",
|
|
platform: "node",
|
|
clean: true,
|
|
});
|