2.0 KiB
2.0 KiB
AGENTS.md — typescript-config
Shared TypeScript base configs (tsconfig.json files) and Vitest base config, consumed by all packages.
What it owns
base.json— Basetsconfig.json: target ES2022, module ESM,experimentalDecorators+emitDecoratorMetadatafor InversifyJSnextjs.json— Next.js app config: extends base, addsjsx: "preserve", Next.js lib typesreact-library.json— React library config: extends base, addsjsx: "react-jsx", DOM libvitest.base.ts— Vitest base config: globals, isolate modules, common ignore patterns
How packages consume them
Packages extend the appropriate base:
// packages/blog/tsconfig.json
{
"extends": "@repo/typescript-config/base.json",
"compilerOptions": {
"rootDir": ".",
"outDir": "dist",
"lib": ["ES2022"]
},
"include": ["src/**/*"]
}
Apps extend Next.js config:
// apps/web-next/tsconfig.json
{
"extends": "@repo/typescript-config/nextjs.json",
"compilerOptions": {
"rootDir": ".",
"outDir": ".next"
}
}
Vitest configs import the base:
// packages/blog/vitest.config.ts
import { defineConfig } from "vitest/config";
import path from "path";
import { vitestBase } from "@repo/typescript-config";
export default defineConfig({
...vitestBase,
test: {
environment: "node",
},
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
});
Test conventions
- No unit tests (config validation via
pnpm typecheckin other packages) - Verify at CI:
pnpm typechecksucceeds across all packages - Type errors should propagate:
pnpm typecheckfails on invalid source code
Structure
base.json # ES2022, ESM, decorators
nextjs.json # Next.js-specific paths + lib
react-library.json # React JSX + DOM
vitest.base.ts # Vitest defaults (globals, isolate)
package.json # Exports above files