@josundt/tsconfig-rules
v5.2.2
Published
Common TypeScript compiler rules for all josundt projects
Downloads
7
Readme
@josundt/tsconfig-rules
CHANGES:
v5.2.x: Change lib from ES2019 to ES2022, target from ES2019 to ES2021 for both Web and Node
V4.7.x: Use module/moduleResolution NodeNext for tsconfig.base.json
V4.7.x: target ES2019 for web projects
V4.5.x: Removed ES5 configs
V4.5.x:
"esModuleInterop": true
is set to default for better ES Module interoperability.
NB! node_modules namespace import syntax must be changed from...import * as foo from "my-package";
...to...
import foo from "my-package";
v4.3.x: Added
"noImplicitOverride": true
(to all rules).
When extending a super class and overriding methods or fields, the new TS 4.3override
keyword is required.v4.2.x: Added
"noPropertyAccessFromIndexSignature": true
(to all rules).
Index signature objects likeRecord<string, T>
now need to use square bracket notation:myRecord["prop"]
...instead of dot notation:myRecord.prop
v3.8.x: Compile everything to ES2017 (for Node ES2019)
Contains the standard base compiler options/rules to be used in all TypeScript source code in different projects.
Add this package as a dependency of your project, and ensure that your project's tsconfig.json file extends the appropriate file based on your project type:
PS! These compiler settings require that you have added the "tslib" package added as a development depdency of your project.
Web projects
A - For webpack projects
For web projects with Webpack:
In the top of your project's tsconfig.json file, add:
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.web.esm.json"
}
B - AMD projects
In the top of your project's tsconfig.json file, add:
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.web.amd.json"
}
NPM package projects - multi-targeting
When building multi-targeting npm packages, we commonly compile 3 different versions, with different entry point references in the package.json of the npm package:
- ES5 target with UMD modules
Works in both node and web, and the compiled entrypoint file path is set in the npm package's main property in package.json:
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.es5.umd.json"
}
- ES5 target with ES modules Compiles to ES5 but uses ES2017 module import syntax. The compiled entrypoint file path is set in the npm package's module property in package.json. PS! Webpack prefers this entrypoint (module instead of main) in the bundle module dependency crawler:
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.web.esm.json"
}
- ES2017 target with ES modules Compiles to ES2017 and uses ES2017 module import syntax. The compiled entrypoint file path is set in the npm package's ES2017 property in package.json. This is for future fully ES2017 and ES2017 modules compliant browsers/node engines.*
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.es2017.esm.json"
}
Node projects
In your project's tsconfig.json file:
{
"extends": "./node_modules/@josundt/tsconfig-rules/tsconfig.base.node.json"
}