From 44f9cbfe144bc74815c65d2c661189c6ff225dcf Mon Sep 17 00:00:00 2001 From: mrboxs Date: Thu, 10 Sep 2026 12:18:51 +0700 Subject: [PATCH] perf: disable dts emit for workspace packages and enable zod compile Skip .d.ts generation in vp pack for api, auth, db, env, shared and server: all packages are private, exports resolve to src via devExports, and nothing consumes dist declarations. The oRPC Implementer type alone expanded to ~25k lines / 1.9 MB of .d.ts (~20s). Typechecking stays covered by vp check. --- apps/server/vite.config.ts | 6 +++--- packages/api/src/contracts/altstack.ts | 1 + packages/api/src/contracts/health.ts | 1 + packages/api/vite.config.ts | 8 +++++--- packages/auth/vite.config.ts | 7 ++++--- packages/db/vite.config.ts | 7 ++++--- packages/env/vite.config.ts | 7 ++++--- packages/shared/src/schemas/project.ts | 1 + packages/shared/src/schemas/role.ts | 1 + packages/shared/vite.config.ts | 7 ++++--- 10 files changed, 28 insertions(+), 18 deletions(-) diff --git a/apps/server/vite.config.ts b/apps/server/vite.config.ts index ec2a4c8..f54011a 100644 --- a/apps/server/vite.config.ts +++ b/apps/server/vite.config.ts @@ -4,9 +4,9 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: nothing imports this app as a library, so declarations + // only cost build time. Typechecking happens in `vp check`. + dts: false, format: 'esm', outDir: 'dist', clean: true, diff --git a/packages/api/src/contracts/altstack.ts b/packages/api/src/contracts/altstack.ts index 8bdfa0b..ce6df92 100644 --- a/packages/api/src/contracts/altstack.ts +++ b/packages/api/src/contracts/altstack.ts @@ -1,3 +1,4 @@ +import 'zod/compile' import { openapi } from '@orpc/openapi' import { z } from 'zod' diff --git a/packages/api/src/contracts/health.ts b/packages/api/src/contracts/health.ts index 9debcdf..5ae67fe 100644 --- a/packages/api/src/contracts/health.ts +++ b/packages/api/src/contracts/health.ts @@ -1,3 +1,4 @@ +import 'zod/compile' import { openapi } from '@orpc/openapi' import { z } from 'zod' diff --git a/packages/api/vite.config.ts b/packages/api/vite.config.ts index 52c5a54..7b05056 100644 --- a/packages/api/vite.config.ts +++ b/packages/api/vite.config.ts @@ -4,9 +4,11 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: the oRPC `Implementer` type carries the whole contract map, + // so tsgo expands ~25k lines / 1.9 MB of declarations (~20s build) that + // nothing consumes — workspace consumers resolve to `src` via + // devExports, and typechecking happens in `vp check`. + dts: false, exports: { enabled: true, devExports: true, diff --git a/packages/auth/vite.config.ts b/packages/auth/vite.config.ts index 52c5a54..19a68e4 100644 --- a/packages/auth/vite.config.ts +++ b/packages/auth/vite.config.ts @@ -4,9 +4,10 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: workspace consumers resolve to `src` via devExports and + // nothing reads `dist` declarations — generating them only costs + // build time. Typechecking happens in `vp check`. + dts: false, exports: { enabled: true, devExports: true, diff --git a/packages/db/vite.config.ts b/packages/db/vite.config.ts index 52c5a54..19a68e4 100644 --- a/packages/db/vite.config.ts +++ b/packages/db/vite.config.ts @@ -4,9 +4,10 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: workspace consumers resolve to `src` via devExports and + // nothing reads `dist` declarations — generating them only costs + // build time. Typechecking happens in `vp check`. + dts: false, exports: { enabled: true, devExports: true, diff --git a/packages/env/vite.config.ts b/packages/env/vite.config.ts index 19a5b9a..f670ef8 100644 --- a/packages/env/vite.config.ts +++ b/packages/env/vite.config.ts @@ -4,9 +4,10 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: workspace consumers resolve to `src` via devExports and + // nothing reads `dist` declarations — generating them only costs + // build time. Typechecking happens in `vp check`. + dts: false, exports: { enabled: true, devExports: true, diff --git a/packages/shared/src/schemas/project.ts b/packages/shared/src/schemas/project.ts index bb9c07c..ceabf78 100644 --- a/packages/shared/src/schemas/project.ts +++ b/packages/shared/src/schemas/project.ts @@ -1,3 +1,4 @@ +import 'zod/compile' import limax from 'limax' import { z } from 'zod' diff --git a/packages/shared/src/schemas/role.ts b/packages/shared/src/schemas/role.ts index 1b28735..07fb966 100644 --- a/packages/shared/src/schemas/role.ts +++ b/packages/shared/src/schemas/role.ts @@ -1,3 +1,4 @@ +import 'zod/compile' import { z } from 'zod' export const ROLES = ['admin', 'user'] as const diff --git a/packages/shared/vite.config.ts b/packages/shared/vite.config.ts index 52c5a54..19a68e4 100644 --- a/packages/shared/vite.config.ts +++ b/packages/shared/vite.config.ts @@ -4,9 +4,10 @@ export default defineConfig({ resolve: { tsconfigPaths: true }, pack: { deps: { resolveDepSubpath: true }, - dts: { - generator: 'tsgo', - }, + // No .d.ts: workspace consumers resolve to `src` via devExports and + // nothing reads `dist` declarations — generating them only costs + // build time. Typechecking happens in `vp check`. + dts: false, exports: { enabled: true, devExports: true,