@williamthorsen/tsconfig 0.1.0 → 0.1.1
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 +6 -10
- package/package.json +2 -2
- package/tsconfig.base.json +22 -2
package/README.md
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
# @williamthorsen/tsconfig
|
|
2
2
|
|
|
3
|
-
Shared TypeScript base config for Node-only projects.
|
|
3
|
+
Shared TypeScript base config for Node-only projects. Inlines the settings of [`@tsconfig/strictest`](https://www.npmjs.com/package/@tsconfig/strictest) and adds the Node and build options it leaves out, so a consuming repo declares only what is genuinely its own.
|
|
4
4
|
|
|
5
5
|
<!-- section:release-notes -->
|
|
6
|
-
## Release notes — v0.1.
|
|
6
|
+
## Release notes — v0.1.1 (2026-08-01)
|
|
7
7
|
|
|
8
|
-
###
|
|
8
|
+
### 🐛 Bug fixes
|
|
9
9
|
|
|
10
|
-
-
|
|
10
|
+
- Inline @tsconfig/strictest instead of extending it (#129)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`@williamthorsen/eslint-config-typescript` now requires Node 24 or later.
|
|
12
|
+
Fixes an issue where, under pnpm, tools that resolve tsconfig files without following symlinks failed to find `@tsconfig/strictest`, breaking lint runs and builds in projects that declare only `@williamthorsen/tsconfig`. Consuming projects no longer need to add `@tsconfig/strictest` to their own `package.json` as a workaround.
|
|
15
13
|
<!-- /section:release-notes -->
|
|
16
14
|
|
|
17
15
|
## Installation
|
|
@@ -20,8 +18,6 @@ Shared TypeScript base config for Node-only projects. Composes [`@tsconfig/stric
|
|
|
20
18
|
pnpm add -D @williamthorsen/tsconfig
|
|
21
19
|
```
|
|
22
20
|
|
|
23
|
-
`@tsconfig/strictest` comes along as a dependency; it does not need to be installed separately.
|
|
24
|
-
|
|
25
21
|
## Quick start
|
|
26
22
|
|
|
27
23
|
```jsonc
|
|
@@ -36,7 +32,7 @@ pnpm add -D @williamthorsen/tsconfig
|
|
|
36
32
|
|
|
37
33
|
## What the base sets
|
|
38
34
|
|
|
39
|
-
Everything
|
|
35
|
+
Everything `@tsconfig/strictest` sets, plus the Node and build options it omits:
|
|
40
36
|
|
|
41
37
|
| Option | Value |
|
|
42
38
|
| ---------------------------- | ------------ |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@williamthorsen/tsconfig",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Shared TypeScript base config for Node-only projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tsconfig",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"files": [
|
|
26
26
|
"tsconfig.base.json"
|
|
27
27
|
],
|
|
28
|
-
"
|
|
28
|
+
"devDependencies": {
|
|
29
29
|
"@tsconfig/strictest": "2.0.8"
|
|
30
30
|
},
|
|
31
31
|
"engines": {
|
package/tsconfig.base.json
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
// Base TSConfig for Node-only TypeScript: `@tsconfig/strictest` plus the Node/build options it omits.
|
|
2
2
|
// Consumers set `types`, `paths`, `jsx`, and `include`. Node 24 floor.
|
|
3
3
|
//
|
|
4
|
-
// Every setting deviates from a TypeScript default; a comment says why it can't be dropped.
|
|
4
|
+
// Every Node/build setting deviates from a TypeScript default; a comment says why it can't be dropped.
|
|
5
|
+
// The inlined strictest settings carry no such comments: their rationale belongs to upstream.
|
|
5
6
|
{
|
|
6
7
|
"$schema": "https://json.schemastore.org/tsconfig",
|
|
7
|
-
"extends": "@tsconfig/strictest",
|
|
8
8
|
"compilerOptions": {
|
|
9
|
+
// Inlined from `@tsconfig/strictest`, in upstream's order. Not reached through `extends`, because
|
|
10
|
+
// resolvers that don't realpath pnpm symlinks can't follow the second hop. The root test
|
|
11
|
+
// `__tests__/tsconfig-base.app.test.ts` asserts this block still matches the installed devDependency.
|
|
12
|
+
"strict": true,
|
|
13
|
+
"allowUnusedLabels": false,
|
|
14
|
+
"allowUnreachableCode": false,
|
|
15
|
+
"exactOptionalPropertyTypes": true,
|
|
16
|
+
"noFallthroughCasesInSwitch": true,
|
|
17
|
+
"noImplicitOverride": true,
|
|
18
|
+
"noImplicitReturns": true,
|
|
19
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
20
|
+
"noUncheckedIndexedAccess": true,
|
|
21
|
+
"noUnusedLocals": true,
|
|
22
|
+
"noUnusedParameters": true,
|
|
23
|
+
|
|
24
|
+
"isolatedModules": true,
|
|
25
|
+
|
|
26
|
+
"esModuleInterop": true,
|
|
27
|
+
"skipLibCheck": true,
|
|
28
|
+
|
|
9
29
|
// Permit `./foo.ts` specifiers; the build step rewrites them on emit.
|
|
10
30
|
"allowImportingTsExtensions": true,
|
|
11
31
|
// Without this, `lib` follows `target` into the `.full` variant, admitting DOM globals.
|