@flowr/typescript
v5.0.0
Published
Common TSConfigs and TypeScript in Petal standardized projects
Downloads
123
Maintainers
Readme
@flowr/typescript
A collection of different base tsconfig.json
to be extended from in your project.
Installation
You can use the following command to install this package, or replace pnpm add
with your package manager of choice.
pnpm add -D @flowr/typescript
Usage
This package ships a couple of different sets of tsconfig, they should be used in an array of extends
in your tsconfig.json
file. The supported configs are:
@flowr/typescript/base
-> This is identical to@flowr/typescript
@flowr/typescript/strict
@flowr/typescript/decorators
@flowr/typescript/verbatim
You should always start with the base config, regardless of what other configs you choose. Next you can opt-in to the other configs.
Finally you should configure your package.json properly based on what kind of package you are writing
- For CJS packages you should add
"type": "commonjs"
to yourpackage.json
- For ESM packages you should add
"type": "module"
to yourpackage.json
- For a package that is going to be used by both CJS and ESM then you should not add any
"type"
to yourpackage.json
Base
The base config (@flowr/typescript
, or @flowr/typescript/base
) is the default config with options set up in such a way that it will suite nearly all projects.
You can view the content of this tsconfig here
Strict
You should include this config if you want to extra strict checking. This configures the following compiler options:
allowUnreachableCode
tofalse
allowUnusedLabels
tofalse
exactOptionalPropertyTypes
tofalse
noImplicitOverride
totrue
You can view the content of this tsconfig here
Decorators
You should include this config if you want to use decorators in the project using decorators from before the TC39 standardization process. This enables the following compiler options:
You can view the content of this tsconfig here
Contributing
Try to optimize for the fewest specified options between the config specializations. For example, only app
has noEmit: true
, since the default value, false
, is good for the lib
config. Specifying it only in the app
config means fewer overall entries!
We want to keep maintenance low by only specifying what is necessary. If the option's default value is good for every config, remove it from every config!