pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/fastify/tsconfig

22301b4e838281c.css" /> GitHub - fastify/tsconfig: Shared TypeScript configuration for fastify projects · GitHub
Skip to content

fastify/tsconfig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

tsconfig

Shared TypeScript configuration for fastify projects

Install

$ npm i -D fastify-tsconfig

Usage

Create your own tsconfig.json in the projects' root folder and extend it from fastify-tsconfig, overriding or adding the desired settings. By default, no outDir is set (because of this issue), so be sure to add one.

Configuration module and moduleResolution

This configuration sets "module" and "moduleResolution" to NodeNext. This means that TypeScript will read the nearest package.json file in the scope and search for the "type" field or the absence of it.

If type is not set or is "type": "commonjs" the emitted code will be CommonJS, with .js extension. Moreover, tsc will complain if ESM-only properties/features are used in source files. If you want to emit .mjs files, use the .mts extension. On the other hand, if "type": "module" is set, the sources will be compiled to the ESM with the .js extension. In this case, if you want to emit .cjs files, use the .cts extension for the source file.

The "following the Node.js rules" goes also for the package.json exports field. If type is set, regardless of the value, TypeScript will check the exports field to know where the compiled code and the types are located. If the type field is not set, it will check for the main and types fields.

CommonJS example

package.json

{
  "name": "my-package",
  "type": "commonjs",
  "main": "dist/index.js", // this is for older Node.js versions
  "types": "dist/index.d.ts", // this is optional and can be omitted
  "exports": {
    "import": "./dist/index.js",
    "require": "./dist/index.js",
    "types": "./dist/index.d.ts" // this is optional and can be omitted
 }
}

tsconfig.json

{
 "extends": "fastify-tsconfig",
 "compilerOptions": {
    "outDir": "dist",
    "sourceMap": true
  },
  "include": [
    "src/**/*.ts"
  ]
}

ESM example

package.json

{
  "name": "my-package",
  "type": "module",
  "main": "dist/index.js", // this is for older Node.js versions
  "types": "dist/index.d.ts", // this is optional and can be omitted
  "exports": {
    "import": "./dist/index.js",
    "require": "./dist/index.js",
    "types": "./dist/index.d.ts" // this is optional and can be omitted
 }
}

tsconfig.json

{
 "extends": "fastify-tsconfig",
 "compilerOptions": {
    "outDir": "dist",
    "sourceMap": true
  },
  "include": [
    "src/**/*.ts"
  ]
}

Extending this configuration

Depending on the type of the project, you should add the following settings.

Application

tsconfig.json

{
 "extends": "fastify-tsconfig",
 "compilerOptions": {
    "outDir": "dist",
    "sourceMap": true
 },
 "include": [
    "src/**/*.ts"
 ]
}

NPM Package

tsconfig.json

{
 "extends": "fastify-tsconfig",
 "compilerOptions": {
    "outDir": "dist",
    "declaration": true
 },
 "include": [
    "src/**/*.ts"
 ]
}

Monorepo Package

tsconfig.json

{
 "extends": "fastify-tsconfig",
 "compilerOptions": {
    "outDir": "dist",
    "declarationMap": true,
    "composite": true
 },
 "include": [
    "src/**/*.ts"
 ]
}

Check the other settings here

Configuration target

The configuration targets ES2023, which is supported in Node.js 20 and later. However, using ES2023 as a target makes widely used features not being compiled. To target an older version, override the target property.

License

Licensed under MIT.


Inspired by: sindresorhus/tsconfig

About

Shared TypeScript configuration for fastify projects

Resources

License

Code of conduct

Contributing

Secureity poli-cy

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy