fix(docs): drop inherited baseUrl so typecheck survives TypeScript 7 - #13
Merged
Merged
Conversation
`npm run typecheck` is gated in both workflows here, so Dependabot #9 (typescript 6.0.3 -> 7.0.2) is correctly red: tsconfig.json(3,3): error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration. `@docusaurus/tsconfig` sets `baseUrl`. The existing `"ignoreDeprecations": "6.0"` silenced TS 6's TS5101 deprecation warning, but TS 7 rejects the option itself, so that escape hatch is gone — and an inherited compilerOption cannot be unset by the extending config. While upstream still ships baseUrl (it does as of 3.10.2), `extends` and a green typecheck are mutually exclusive. Inline the base config minus baseUrl. This also fixes `@site/*`, which was quietly broken: relative paths in an extended config resolve against that config's own directory, so the inherited `baseUrl: "."` pointed at node_modules/@docusaurus/tsconfig and `@site/foo` resolved to nothing. With baseUrl gone, `paths` resolves against the site root, matching Docusaurus's own webpack alias. Add scripts/check-tsconfig-drift.mjs (+ `npm run check:tsconfig`) so the inline copy cannot silently rot, wired into both workflows next to the existing typecheck. It depends on nothing but Node — deliberately, since a guard that imports `typescript` breaks under the very upgrade it guards (learned the hard way in cocoon#37). Verified: check:tsconfig and typecheck exit 0 under both 6.0.3 and 7.0.2, and `npm run build` succeeds. Unblocks #9. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Jul 27, 2026
pull Bot
pushed a commit
to Dustin4444/erigon
that referenced
this pull request
Jul 27, 2026
…rigontech#22764) ## Why Dependabot erigontech#22395 (`typescript` 6.0.3 → 7.0.2) was closed because it failed docs-site CI: ``` docs/site/tsconfig.json(7,5): error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration. ``` TypeScript 7 **removed** `baseUrl`. Our `"ignoreDeprecations": "6.0"` silenced TS 6's TS5101 *deprecation*, but TS 7 rejects the option itself, so that escape hatch expires at the major boundary. **Deleting only our own `baseUrl` line would not fix it.** `extends: @docusaurus/tsconfig` would inherit upstream's — it still ships one as of 3.10.2 — and an inherited `compilerOption` cannot be unset by the extending config. The error would simply move from `(7,5)` to `(6,3)`. ## What 1. **`docs/site/tsconfig.json`** — inline the base config minus `baseUrl`, dropping the now-useless `ignoreDeprecations`. 2. **`docs/site/scripts/check-tsconfig-drift.mjs`** (+ `npm run check:tsconfig`) — inlining means upstream changes stop reaching us, so this diffs our copy against `node_modules/@docusaurus/tsconfig` modulo declared deltas, and reports when upstream drops `baseUrl` and the whole workaround can be reverted. Wired into `docs-site-build.yml` ahead of the existing typecheck. The guard depends on nothing but Node, deliberately: a version that imported `typescript` to parse JSONC broke under the very upgrade it guards (erigontech/cocoon#37). ## `@site/*` is unaffected here Verified via the TypeScript API — `@site/docusaurus.config` resolves to `docs/site/docusaurus.config.ts` both before and after: ``` OLD (extends + our own baseUrl: "."): @site/docusaurus.config -> <site>/docusaurus.config.ts NEW (inlined, no baseUrl): @site/docusaurus.config -> <site>/docusaurus.config.ts ``` Worth noting because this is where erigon differed from its siblings: in cocoon and zilkworm-docs `baseUrl` was *only inherited*, so it resolved to `node_modules/@docusaurus/tsconfig` and left `@site/*` silently broken. Our explicit `baseUrl: "."` is what kept the alias correct — and dropping it costs nothing, because `paths` now resolves against the tsconfig's own directory, which is the same `docs/site` root. ## Verification In `docs/site`, under **both** toolchains: | | TS 6.0.3 | TS 7.0.2 | |---|---|---| | `npm run check:tsconfig` | exit 0 | exit 0 | | `npm run typecheck` | exit 0 | exit 0 | | `npm run build` | exit 0 | exit 0 | ## Relationship to erigontech#22763 **Supersedes erigontech#22763**, which added a Dependabot ignore rule for `typescript` majors to stop the closed PR resurfacing on every 7.x release. That deferral is unnecessary if this lands — recommend closing erigontech#22763. If you'd rather stay on TS 6 for now, do the opposite: merge erigontech#22763 and close this. Same fix as erigontech/cocoon#36 and erigontech/zilkworm-docs#13, both now merged and running TypeScript 7.0.2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Bloxster <gianni.morselli@erigon.tech> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
npm run typecheckis gated in both workflows here, so Dependabot #9 (typescript6.0.3 → 7.0.2) is correctly red:@docusaurus/tsconfigsetsbaseUrl. The existing"ignoreDeprecations": "6.0"silenced TS 6's TS5101 deprecation warning, but TS 7 rejects the option itself, so that escape hatch is gone — and an inheritedcompilerOptioncannot be unset by the extending config. While upstream still shipsbaseUrl(it does as of 3.10.2),extendsand a green typecheck are mutually exclusive.What
tsconfig.json— inline the base config minusbaseUrl, dropping the now-uselessignoreDeprecations.scripts/check-tsconfig-drift.mjs(+npm run check:tsconfig) — the cost of inlining is that upstream changes stop reaching us, so this diffs our copy againstnode_modules/@docusaurus/tsconfigmodulo declared deltas, and says so when upstream dropsbaseUrland the workaround can be deleted. Wired into both workflows beside the existing typecheck.The guard depends on nothing but Node, deliberately: a guard that imports
typescriptbreaks under the very upgrade it guards (learned the hard way in erigontech/cocoon#37).This also fixes
@site/*, which was silently brokenRelative paths in an extended config resolve against that config's own directory, so the inherited
baseUrl: "."pointed insidenode_modules:TypeScript now agrees with Docusaurus's own webpack
@site→siteDiralias.Verification
npm run check:tsconfignpm run typechecknpm run buildUnblocks #9.
🤖 Generated with Claude Code