@cookielab.io/typescript-config
v0.0.1
Published
Shareable TypeScript configuration for a simple project kickoff.
Readme
Cookielab's TypeScript Configuration
This package contains the TypeScript configuration for our code style.
The code style aims to be as astrict and defensive as possible to avoid bugs & unwanted side-effects and to improve code readability.
The ruleset is inspired by the Tiger Style coding principles and pretty much boils down to the following core principles:
- Security
- A.k.a. eing proactive about bugs instead of reactive
- Performance
- Developer Experience
- Explicit over implicit code
- Consistent code style
Documentation
As the configuration only handles compilerOptions, the reasoning behind each setting can be found in compilerOptions.
Installation
First add the package as a development dependency using your package manager of choice.
pnpm add -D -E @cookielab/typescript-configThen extend your tsconfig.json using the extends directive:
{
"extends": "@cookielab/typescript-config"
}Do not forget to add includes or other necessary settings for your project - this configuration handles only the compiler options. The full configuration file may look something like this:
{
"extends": "@cookielab/typescript-config",
"includes": ["src/", "test/"]
}Development
The project uses an autogenerated Zod schema from schemastore.org (https://json.schemastore.org/tsconfig). However, as Zod does not support generating schemas directly from JSON Schema, we use two convertors in between.
Firstly, the JSON schema in tsconfig.schema.json is converted into TypeScript types.
Afterward, the TypeScript types are then converted into a Zod schema. See the generated output for more details. Surprisingly enough, even the comments from the JSON Schema are preserved in the final Zod schema.
To generate a newer version of the configuration follow these steps:
pnpm schema:update # Downloads the latest version from schemastore.org into ./src/tsconfig.schema.json
pnpm schema:generate # Generates the Zod schema from ./src/tsconfig.schema.jsonThe project is type checked with the output configuration. To get an up-to-date results, build the project first
pnpm build
pnpm types