{ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "target": "es2021", "module": "esnext", "moduleResolution": "bundler", // We don't want to include types dependencies in our compiled output, so tell TypeScript // to enforce using `import type` instead of `import` for Types. "verbatimModuleSyntax": true, "allowJs": true, "strict": true, "noUncheckedIndexedAccess": true, "allowArbitraryExtensions": true, "allowSyntheticDefaultImports": false, "allowImportingTsExtensions": true, "esModuleInterop": true, // --- Lint-style rules // TypeScript also supplies some lint-style checks; nearly all of them are // better handled by ESLint with the `@typescript-eslint`. This one is more // like a safety check, though, so we leave it on. "noPropertyAccessFromIndexSignature": true, // --- Compilation/integration settings // Setting `noEmitOnError` here allows tools trying to respect the tsconfig // to still emit code without breaking on errors. // Errors are still reported in the CLI when running `tsc`, // but the errors won't prevent code from being emitted. // This helps hasten development by allowing devs to prototype before coming // to a decision on what they want their types to be. "noEmitOnError": false, // We use Babel for emitting runtime code, because it's very important that // we always and only use the same transpiler for non-stable features. // If you were to change this to `true`, it could lead to accidentally // generating code with `tsc` instead of Babel, and could thereby // result in broken code at runtime. "emitDeclarationOnly": true, "declaration": true, "declarationMap": true, "declarationDir": "dist", "inlineSourceMap": true, "inlineSources": true, "skipLibCheck": true, "paths": { "src/*": ["./src/*"] } }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }