No description
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| .gitignore | ||
| package.json | ||
| README.md | ||
| tsconfig.base.json | ||
| tsconfig.esm.json | ||
@lilith/typescript-config-base
Base TypeScript configuration with strict settings and best practices.
Features
- Strict Type Checking: All strict options enabled
- Modern Target: ES2022 for Node.js 18+
- NodeNext Modules: Native ESM/CJS resolution
- Declaration Maps: Full IDE support
- ESM Variant: Separate ESM-optimized config
Installation
pnpm add -D @lilith/typescript-config-base typescript
Usage
Create a tsconfig.json in your project:
{
"extends": "@lilith/typescript-config-base",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
ESM Projects
For pure ESM projects:
{
"extends": "@lilith/typescript-config-base/esm",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src"
}
}
Configuration
Compiler Options
| Option | Value | Description |
|---|---|---|
target |
ES2022 |
Modern JavaScript features |
module |
NodeNext |
Native Node.js module resolution |
moduleResolution |
NodeNext |
ESM/CJS hybrid support |
strict |
true |
All strict checks enabled |
Strict Checks
All strict type checking options are enabled:
noImplicitAny- No implicitanytypesstrictNullChecks- Strict null checkingstrictFunctionTypes- Strict function parameter typesstrictBindCallApply- Strict bind/call/applystrictPropertyInitialization- Class property initializationnoImplicitThis- No implicitthistypesuseUnknownInCatchVariables- Catch variables asunknownalwaysStrict- Emit"use strict"
Additional Checks
noUnusedLocals- Error on unused localsnoUnusedParameters- Error on unused parametersnoImplicitReturns- All paths must returnnoFallthroughCasesInSwitch- No fallthrough in switchnoImplicitOverride- Requireoverridekeyword
Output Options
declaration: true- Generate.d.tsfilesdeclarationMap: true- Source maps for declarationssourceMap: true- JavaScript source maps
Module Interop
esModuleInterop: true- CommonJS/ESM interopskipLibCheck: true- Skip library type checkingforceConsistentCasingInFileNames: true- Case-sensitive importsresolveJsonModule: true- Import JSON filesisolatedModules: true- Bundler compatibility
Exports
| Export | File | Use Case |
|---|---|---|
. |
tsconfig.base.json |
Default configuration |
./esm |
tsconfig.esm.json |
Pure ESM projects |
Examples
Node.js Library
{
"extends": "@lilith/typescript-config-base",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"declaration": true
},
"include": ["src/**/*"]
}
Node.js Application
{
"extends": "@lilith/typescript-config-base",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"declaration": false
},
"include": ["src/**/*"]
}
Monorepo Package
{
"extends": "@lilith/typescript-config-base",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"composite": true,
"declarationMap": true
},
"include": ["src/**/*"],
"references": [
{ "path": "../shared" }
]
}
License
MIT