@aprx/tsconfig 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @aprx/tsconfig
2
+
3
+ ## Setup
4
+
5
+ - Install the package
6
+
7
+ ```bash
8
+ npm install -D @aprx/tsconfig typescript
9
+ ```
10
+
11
+ - Choose which `tsconfig.json` you need from the [list](#list-of-tsconfigs) below and add it to your project
12
+
13
+ ```json
14
+ {
15
+ "extends": "@aprx/tsconfig"
16
+ }
17
+ ```
18
+
19
+ ## List of TSConfigs
20
+
21
+ There are two categories of configurations: those using `tsc` and those using any other bundler.
22
+
23
+ | Using `tsc` | Includes DOM | Use case |
24
+ |------------------------------------------------|:------------------:|-------------------------------------------------------------------- |
25
+ | `"extends": "@aprx/tsconfig/tsc"` | :x: | Basic configuration, customize it as you wish. |
26
+ | `"extends": "@aprx/tsconfig/tsc/app"` | :white_check_mark: | Preset for building an **application**. Includes `DOM` and `JSX`. |
27
+ | `"extends": "@aprx/tsconfig/tsc/lib"` | :x: | Preset for building a **library**. |
28
+ | `"extends": "@aprx/tsconfig/tsc/monorepo-lib"` | :x: | Preset for building a **library in a monorepo**. |
29
+
30
+ | Using another bundler | Includes DOM | Use case |
31
+ |------------------------------------------------|:------------------:|-------------------------------------------------------------------- |
32
+ | `"extends": "@aprx/tsconfig"` | :x: | Basic configuration, customize it as you wish. |
33
+ | `"extends": "@aprx/tsconfig/app"` | :white_check_mark: | Preset for building an **application**. Includes `DOM` and `JSX`. |
34
+ | `"extends": "@aprx/tsconfig/lib"` | :x: | Preset for building a **library**. |
35
+ | `"extends": "@aprx/tsconfig/monorepo-lib"` | :x: | Preset for building a **library in a monorepo**. |
36
+ | `"extends": "@aprx/tsconfig/nextjs"` | :white_check_mark: | Preset for building a Next.js application. Includes [recommended properties][nextjs-config]. |
37
+
38
+ ## Resources
39
+
40
+ - <https://github.com/total-typescript/tsconfig>
41
+ - <https://github.com/tsconfig/bases>
42
+
43
+ ## Credits
44
+
45
+ Special thanks to **Matt Pocock** for [the inspiration](https://www.totaltypescript.com/tsconfig-cheat-sheet)
46
+
47
+ ## License
48
+
49
+ MIT
50
+
51
+ [nextjs-config]: https://github.com/vercel/next.js/blob/canary/examples/blog-starter/tsconfig.json
package/base.md ADDED
@@ -0,0 +1,54 @@
1
+ # Base
2
+
3
+ ```json
4
+ {
5
+ /* Opinionated Options */
6
+ "forceConsistentCasingInFileNames": true,
7
+ "moduleResolution": "bundler",
8
+ "noFallthroughCasesInSwitch": true,
9
+ "noUnusedLocals": true,
10
+ "exactOptionalPropertyTypes": true,
11
+ "noImplicitAny": true,
12
+ "erasableSyntaxOnly": true,
13
+ "noUncheckedSideEffectImports": true,
14
+
15
+ /* Base Options: */
16
+ "esModuleInterop": true,
17
+ "skipLibCheck": true,
18
+ "target": "es2022",
19
+ "allowJs": true,
20
+ "resolveJsonModule": true,
21
+ "moduleDetection": "force",
22
+ "isolatedModules": true,
23
+ "verbatimModuleSyntax": true,
24
+
25
+ /* Strictness */
26
+ "strict": true,
27
+ "noUncheckedIndexedAccess": true,
28
+ "noImplicitOverride": true,
29
+
30
+ /* If transpiling with TypeScript: */
31
+ "module": "NodeNext",
32
+ "outDir": "dist",
33
+ "sourceMap": true,
34
+
35
+ /* AND if you're building for a library: */
36
+ "declaration": true,
37
+
38
+ /* AND if you're building for a library in a monorepo: */
39
+ "composite": true,
40
+ "declarationMap": true,
41
+
42
+ /* If NOT transpiling with TypeScript: */
43
+ "module": "preserve",
44
+ "outDir": "dist",
45
+ "noEmit": true,
46
+
47
+ /* If interact with the DOM: */
48
+ "jsx": "preserve",
49
+ "lib": ["es2022", "dom", "dom.iterable"],
50
+
51
+ /* If DOESN'T interact with the DOM: */
52
+ "lib": ["es2022"]
53
+ }
54
+ ```
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@aprx/tsconfig",
3
+ "description": "A collection of Typescript configurations",
4
+ "version": "0.1.0",
5
+ "license": "MIT",
6
+ "author": "Aperrix",
7
+ "homepage": "https://github.com/aperrix/code-quality-tools/packages/tsconfig#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/aperrix/code-quality-tools.git",
11
+ "directory": "packages/tsconfig"
12
+ },
13
+ "exports": {
14
+ ".": "./src/base.json",
15
+ "./app": "./src/app.json",
16
+ "./lib": "./src/lib.json",
17
+ "./monorepo-lib": "./src/monorepo-lib.json",
18
+ "./nextjs": "./src/nextjs.json",
19
+
20
+ "./tsc": "./src/tsc/base.json",
21
+ "./tsc/app": "./src/tsc/app.json",
22
+ "./tsc/lib": "./src/tsc/lib.json",
23
+ "./tsc/monorepo-lib": "./src/tsc/monorepo-lib.json"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "peerDependencies": {
29
+ "typescript": "^5.6.0"
30
+ }
31
+ }
package/src/app.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If NOT transpiling with TypeScript: */
30
+ "module": "preserve",
31
+ "noEmit": true,
32
+
33
+ /* If interact with the DOM: */
34
+ "jsx": "preserve",
35
+ "lib": ["es2022", "dom", "dom.iterable"]
36
+ }
37
+ }
package/src/base.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If NOT transpiling with TypeScript: */
30
+ "module": "preserve",
31
+ "noEmit": true,
32
+
33
+ /* If interact with the DOM: */
34
+ "jsx": "preserve",
35
+ "lib": ["es2022"]
36
+ }
37
+ }
package/src/lib.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* AND if you're building for a library: */
30
+ "declaration": true,
31
+
32
+ /* If NOT transpiling with TypeScript: */
33
+ "module": "preserve",
34
+ "noEmit": true,
35
+
36
+ /* If DOESN'T interact with the DOM: */
37
+ "lib": ["es2022"]
38
+ }
39
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* AND if you're building for a library: */
30
+ "declaration": true,
31
+
32
+ /* AND if you're building for a library in a monorepo: */
33
+ "composite": true,
34
+ "declarationMap": true,
35
+
36
+ /* If NOT transpiling with TypeScript: */
37
+ "module": "preserve",
38
+ "noEmit": true,
39
+
40
+ /* If DOESN'T interact with the DOM: */
41
+ "lib": ["es2022"]
42
+ }
43
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Next.js Options */
5
+ "jsx": "preserve",
6
+ "incremental": true,
7
+ "plugins": [
8
+ {
9
+ "name": "next"
10
+ }
11
+ ],
12
+ "paths": {
13
+ "@/*": ["./src/*"]
14
+ },
15
+
16
+ /* Opinionated Options */
17
+ "forceConsistentCasingInFileNames": true,
18
+ "moduleResolution": "bundler",
19
+ "noFallthroughCasesInSwitch": true,
20
+ "noUnusedLocals": true,
21
+ "exactOptionalPropertyTypes": true,
22
+ "noImplicitAny": true,
23
+ "erasableSyntaxOnly": true,
24
+ "noUncheckedSideEffectImports": true,
25
+
26
+ /* Base Options: */
27
+ "esModuleInterop": true,
28
+ "skipLibCheck": true,
29
+ "target": "es2022",
30
+ "allowJs": true,
31
+ "resolveJsonModule": true,
32
+ "moduleDetection": "force",
33
+ "isolatedModules": true,
34
+ "verbatimModuleSyntax": true,
35
+
36
+ /* Strictness */
37
+ "strict": true,
38
+ "noUncheckedIndexedAccess": true,
39
+ "noImplicitOverride": true,
40
+
41
+ /* If NOT transpiling with TypeScript: */
42
+ "module": "preserve",
43
+ "noEmit": true,
44
+
45
+ /* If interact with the DOM: */
46
+ "lib": ["es2022", "dom", "dom.iterable"]
47
+ },
48
+ "include": [
49
+ "next-env.d.ts",
50
+ "**/*.ts",
51
+ "**/*.tsx",
52
+ ".next/types/**/*.ts",
53
+ ".next/dev/types/**/*.ts"
54
+ ],
55
+ "exclude": ["node_modules"]
56
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If transpiling with TypeScript: */
30
+ "module": "NodeNext",
31
+ "outDir": "dist",
32
+ "sourceMap": true,
33
+
34
+ /* If interact with the DOM: */
35
+ "jsx": "preserve",
36
+ "lib": ["es2022", "dom", "dom.iterable"]
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If transpiling with TypeScript: */
30
+ "module": "NodeNext",
31
+ "outDir": "dist",
32
+ "sourceMap": true,
33
+
34
+ /* If interact with the DOM: */
35
+ "jsx": "preserve",
36
+ "lib": ["es2022"]
37
+ }
38
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If transpiling with TypeScript: */
30
+ "module": "NodeNext",
31
+ "outDir": "dist",
32
+ "sourceMap": true,
33
+
34
+ /* AND if you're building for a library: */
35
+ "declaration": true,
36
+
37
+ /* If DOESN'T interact with the DOM: */
38
+ "lib": ["es2022"]
39
+ }
40
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ /* Opinionated Options */
5
+ "forceConsistentCasingInFileNames": true,
6
+ "moduleResolution": "bundler",
7
+ "noFallthroughCasesInSwitch": true,
8
+ "noUnusedLocals": true,
9
+ "exactOptionalPropertyTypes": true,
10
+ "noImplicitAny": true,
11
+ "erasableSyntaxOnly": true,
12
+ "noUncheckedSideEffectImports": true,
13
+
14
+ /* Base Options: */
15
+ "esModuleInterop": true,
16
+ "skipLibCheck": true,
17
+ "target": "es2022",
18
+ "allowJs": true,
19
+ "resolveJsonModule": true,
20
+ "moduleDetection": "force",
21
+ "isolatedModules": true,
22
+ "verbatimModuleSyntax": true,
23
+
24
+ /* Strictness */
25
+ "strict": true,
26
+ "noUncheckedIndexedAccess": true,
27
+ "noImplicitOverride": true,
28
+
29
+ /* If transpiling with TypeScript: */
30
+ "module": "NodeNext",
31
+ "outDir": "dist",
32
+ "sourceMap": true,
33
+
34
+ /* AND if you're building for a library: */
35
+ "declaration": true,
36
+
37
+ /* AND if you're building for a library in a monorepo: */
38
+ "composite": true,
39
+ "declarationMap": true,
40
+
41
+ /* If DOESN'T interact with the DOM: */
42
+ "lib": ["es2022"]
43
+ }
44
+ }