docs(agents): add per-package AGENTS.md for eslint-config + typescript-config
This commit is contained in:
77
packages/typescript-config/AGENTS.md
Normal file
77
packages/typescript-config/AGENTS.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# AGENTS.md — typescript-config
|
||||
|
||||
Shared TypeScript base configs (`tsconfig.json` files) and Vitest base config, consumed by all packages.
|
||||
|
||||
## What it owns
|
||||
|
||||
- **`base.json`** — Base `tsconfig.json`: target ES2022, module ESM, `experimentalDecorators` + `emitDecoratorMetadata` for InversifyJS
|
||||
- **`nextjs.json`** — Next.js app config: extends base, adds `jsx: "preserve"`, Next.js lib types
|
||||
- **`react-library.json`** — React library config: extends base, adds `jsx: "react-jsx"`, DOM lib
|
||||
- **`vitest.base.ts`** — Vitest base config: globals, isolate modules, common ignore patterns
|
||||
|
||||
## How packages consume them
|
||||
|
||||
Packages extend the appropriate base:
|
||||
|
||||
```json
|
||||
// packages/blog/tsconfig.json
|
||||
{
|
||||
"extends": "@repo/typescript-config/base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": ".",
|
||||
"outDir": "dist",
|
||||
"lib": ["ES2022"]
|
||||
},
|
||||
"include": ["src/**/*"]
|
||||
}
|
||||
```
|
||||
|
||||
Apps extend Next.js config:
|
||||
|
||||
```json
|
||||
// apps/web-next/tsconfig.json
|
||||
{
|
||||
"extends": "@repo/typescript-config/nextjs.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": ".",
|
||||
"outDir": ".next"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vitest configs import the base:
|
||||
|
||||
```typescript
|
||||
// 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 typecheck` in other packages)
|
||||
- Verify at CI: `pnpm typecheck` succeeds across all packages
|
||||
- Type errors should propagate: `pnpm typecheck` fails 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
|
||||
```
|
||||
Reference in New Issue
Block a user