@williamthorsen/tsconfig 0.1.0 → 0.2.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 CHANGED
@@ -1,17 +1,15 @@
1
1
  # @williamthorsen/tsconfig
2
2
 
3
- Shared TypeScript base config for Node-only projects. Composes [`@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.
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.0 (2026-07-23)
6
+ ## Release notes — v0.2.0 (2026-08-02)
7
7
 
8
8
  ### 🎉 Features
9
9
 
10
- - 🚨 **Breaking:** Publish a shared TypeScript config on a Node 24 floor (#108)
10
+ - Add defineConfig for authoring strict-lint configs (#133)
11
11
 
12
- Introduces `@williamthorsen/tsconfig`, a published baseline that Node-only TypeScript projects can extend. It pairs the strictest available TypeScript settings with additional Node and build options. A consumer is left to declare its own ambient types, path aliases, JSX, and file globs.
13
-
14
- `@williamthorsen/eslint-config-typescript` now requires Node 24 or later.
12
+ Adds a `defineConfig` helper function for authoring the `strict-lint` config file.
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 from `@tsconfig/strictest`, plus the Node and build options strictest omits:
35
+ Everything `@tsconfig/strictest` sets, plus the Node and build options it omits:
40
36
 
41
37
  | Option | Value |
42
38
  | ---------------------------- | ------------ |
@@ -52,7 +48,7 @@ Everything from `@tsconfig/strictest`, plus the Node and build options strictest
52
48
 
53
49
  ## What the consumer owns
54
50
 
55
- The base deliberately declares none of these:
51
+ The base declares none of these:
56
52
 
57
53
  - **`types`** — the ambient type packages in scope. Most Node projects want `["node"]`; declaring it narrows the default, which would otherwise pull in every `@types/*` package installed.
58
54
  - **`paths`** — TypeScript resolves `baseUrl`-less `paths` relative to the file that _declares_ them, so a path alias set in this package would resolve inside `node_modules`. Aliases must be declared by the config that owns the source tree.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williamthorsen/tsconfig",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
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
- "dependencies": {
28
+ "devDependencies": {
29
29
  "@tsconfig/strictest": "2.0.8"
30
30
  },
31
31
  "engines": {
@@ -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.