@kitschpatrol/typescript-config
v8.6.0
Published
TypeScript configuration for @kitschpatrol/shared-config.
Downloads
2,025
Maintainers
Readme
@kitschpatrol/typescript-config
TypeScript configuration for @kitschpatrol/shared-config.
Overview
It's a shared TypeScript tsconfig.json config, plus a command-line tool ksc-typescript to perform TypeScript-related validation and linting.
[!IMPORTANT]
You can use this package on its own, but it's recommended to use
@kitschpatrol/shared-configinstead for a single-dependency and single-package approach to linting and fixing your project.This package is included as a dependency in
@kitschpatrol/shared-config, which also automatically invokes the command line functionality in this package via itsksccommand
Setup
[!NOTE]
The package treats
typescriptas a peer dependency — it expects you to havetypescriptinstalled in your project.
To use just this TypeScript config in isolation:
Install the basic repository configuration files in your project root. This is required for correct PNPM behavior:
pnpm --package=@kitschpatrol/repo-config dlx ksc-repo initAdd the package:
pnpm add -D @kitschpatrol/typescript-configAdd the starter
tsconfig.jsonandtsconfig.build.jsonfiles to your project root, and add any customizations you'd like:pnpm exec ksc-typescript init
Astro and Svelte projects
Framework-specific configs are also exported. Each extends the base config and overrides only what the framework requires.
In an Astro project, the entire tsconfig.json is:
{
"extends": "@kitschpatrol/typescript-config/astro"
}This mirrors the astro/tsconfigs/strict preset that create-astro scaffolds by default, including the .astro/types.d.ts include and dist exclude, layered over the base config.
In a SvelteKit project, extend both this config and SvelteKit's generated config, with the generated config last so its per-project paths, rootDirs, include, and exclude take precedence:
{
"extends": ["@kitschpatrol/typescript-config/svelte", "./.svelte-kit/tsconfig.json"]
}This mirrors the tsconfig.json that sv create scaffolds for SvelteKit projects. Standalone Svelte projects without SvelteKit (Vite's split tsconfig.app.json / tsconfig.node.json layout) aren't covered by this config.
See the Svelte and Astro caveat below for how ksc-typescript lint handles type checking in these projects.
Usage
You can call ksc-typescript directly, or use the script bundled with the config.
Integrate with your package.json scripts as you see fit, for example:
{
"scripts": {
"lint": "ksc-typescript lint"
}
}Ignoring files
See the tsconfig.json exclude key.
.gitignore files are not ignored.
Ignoring code
See the TypeScript directive comments documentation for more details.
Entire files (at top):
/* @ts-nocheck */
Next line:
/* @ts-ignore */
or
/* @ts-expect-error - reason */
CLI
Command: ksc-typescript
Kitschpatrol's TypeScript shared configuration tools.
This section lists top-level commands for ksc-typescript.
Usage:
ksc-typescript <command>| Command | Description |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| init | Initialize by copying starter config files to your project root. |
| lint | Run type checking on your project. Package-scoped. In a monorepo, it will also run in all packages below the current working directory. |
| print-config | Print the TypeScript configuration for the project. Package-scoped. Searches up to the root of a monorepo if necessary. |
| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help-h | Show help | boolean |
| --version-v | Show version number | boolean |
See the sections below for more information on each subcommand.
Subcommand: ksc-typescript init
Initialize by copying starter config files to your project root.
Usage:
ksc-typescript init| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help-h | Show help | boolean |
| --version-v | Show version number | boolean |
Subcommand: ksc-typescript lint
Run type checking on your project. Package-scoped. In a monorepo, it will also run in all packages below the current working directory.
Usage:
ksc-typescript lint| Option | Description | Type | Default |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------- |
| --format | Output format: "native" streams each tool's own output, "machine" prints one parseable line per issue for editor problem matchers, "json" prints an aggregate report. | "json" "machine" "native" | "native" |
| --cache | Use tool-native caches stored below node_modules/.cache/ksc at the workspace root. Disable with --no-cache. | boolean | true |
| --help-h | Show help | boolean | |
| --version-v | Show version number | boolean | |
Subcommand: ksc-typescript print-config
Print the TypeScript configuration for the project. Package-scoped. Searches up to the root of a monorepo if necessary.
Usage:
ksc-typescript print-config| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help-h | Show help | boolean |
| --version-v | Show version number | boolean |
VS Code tasks
ksc-typescript init adds a .vscode/tasks.json with a single task:
ksc-typescript lintrunsksc-typescript lint --format machine, type checking the project
If you're using the complete @kitschpatrol/shared-config package, you'd more likely want to run:
ksc lintrunsksc lint --format machine, which runs allksc linttools across the whole projectksc fixrunsksc fix --format machine, which applies allksc fixauto-fixes and reports anything unfixable
Run them via the Tasks: Run Task command (or the Terminal → Run Task… menu item).
Each task's problem matcher parses the machine-format output and populates VS Code's Problems panel with every reported issue, pointing to the offending file, line, and column.
The tasks share a problem matcher owner with the other @kitschpatrol/shared-config tasks, so the panel reflects the most recent run rather than stacking duplicates.
If your project already has a .vscode/tasks.json, init merges by task label: your own tasks are left alone, and same-label tasks are replaced with the latest definitions.
Notes
Svelte and Astro caveat
The tsc command ignores .svelte and .astro files, and errors on plain .ts files that import them. So, if svelte-check or @astrojs/check is declared in your package's dependencies or devDependencies, the ksc-typescript lint command runs that checker instead of tsc --noEmit:
svelte-check→svelte-check --tsconfig ./tsconfig.json(covers.svelteand plain.ts/.jsfiles)@astrojs/check→astro check(covers.astroand plain.ts/.jsfiles)- Both →
astro checkplussvelte-checkscoped to.sveltefiles only
If neither checker is declared, tsc --noEmit runs as usual, even in projects with a svelte.config.js or astro.config.mjs file.
General
Other shared tsconfig projects
Future integrations
- Are The Types Wrong,
e.g.attw --format ascii --no-summary --profile esm-only --pack .
