TypeScript
TypeScript gives a package one source language for implementation and public types. Build output should remain JavaScript plus declarations so consumers do not need your development compiler configuration.
Start with a strict package config
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"declaration": true,
"declarationMap": true,
"outDir": "./dist",
"skipLibCheck": true
},
"include": ["src"]
}Use a separate configuration only when an output format genuinely needs different compiler behavior. Prefer a bundler configuration for output strategy and keep the TypeScript configuration focused on source checking and declaration generation.
Build and test from artifacts
pnpm build
pnpm typecheck
pnpm tsdRun type tests against the generated package contract. A source-only test can pass while the published declaration path or exports map is broken.
Runtime execution
For local scripts, tsx can run TypeScript without creating a development dist directory. That is convenient for tooling, but it is not a replacement for building libraries before testing the package that consumers install.
