Skip to content

Lint: drop the tsc --build prerequisite and ESLint projectService (CL-7416) - #628

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-7416-lint-drop-projectservice
Sep 4, 2026
Merged

TheGreatAxios merged 1 commit into
mainfrom
cl-7416-lint-drop-projectservice

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

The lint rule set (tseslint.configs.strict + stylistic + core rules) uses no type information, but eslint.config.ts enabled parserOptions.projectService, which needs a prior tsc --build to resolve referenced projects through emitted dist/*.d.ts. That drove the tsc --build tsconfig.build.json && prerequisite and the NODE_OPTIONS=--max-old-space-size=6144 heap flag in the lint script, neither of which any enabled rule needs. This removes languageOptions/projectService/tsconfigRootDir from eslint.config.ts and simplifies the lint script to prettier --check --cache . && eslint --cache ..

Verification

bunx eslint . findings, byte-for-byte identical before and after:

✖ 10 problems (0 errors, 10 warnings)

time bun run lint:

  • Before: 41.74s user 4.79s system 76% cpu 1:00.99 total
  • After: 13.94s user 0.56s system 117% cpu 12.325 total

bunx tsc -p tsconfig.json --noEmit on the root project passes clean.

CI's lint job cache key already hashes eslint.config.ts and runs only bun run lint — no CI step relies on dist/ existing beforehand. No docs mention the removed mechanics; scripts/generate-tsconfig-references.ts and scripts/typecheck.ts reference tsc --build/projectService only for the separate bun run typecheck path, untouched here.

@linear-code

linear-code Bot commented Sep 4, 2026

Copy link
Copy Markdown

CL-7416

@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Self-review

Verified the PR's specific claims directly; no defects found, nothing to fix.

  • bunx eslint . finding set: CONFIRMED-MATCH — 10 problems (0 errors, 10 warnings), byte-for-byte identical to the body's claim (all 10 are noInlineConfig warnings on now-inert eslint-disable-next-line comments, unrelated to this change).
  • No enabled rule needs type info: CONFIRMED — eslint.config.ts uses tseslint.configs.strict and tseslint.configs.stylistic (the non-type-checked variants, not strict-type-checked/recommended-type-checked), and no custom rule references parserServices.
  • No leftover docs/CI reference to the removed heap flag or tsc --build prerequisite: CONFIRMED — no hits for max-old-space-size or tsc --build tsconfig.build in .github, README.md, AGENTS.md, IMPLEMENTATION.md, or docs.

Targeted tests: bunx eslint . — pass (0 errors, matches claimed baseline). No TypeScript changed, so no typecheck run.

…-7416)

The strict/stylistic tseslint rule sets plus core rules use no type
information, so parserOptions.projectService (which required a prior
tsc --build to resolve referenced projects' emitted dist/*.d.ts, and
the 6GB heap flag to support it) was pure overhead. Verified eslint's
findings are byte-for-byte identical before and after (0 errors, 10
warnings); bun run lint drops from ~61s to ~12s.
@TheGreatAxios
TheGreatAxios force-pushed the cl-7416-lint-drop-projectservice branch from 324bc61 to b13412c Compare September 4, 2026 13:46
@TheGreatAxios
TheGreatAxios merged commit 2287a4e into main Sep 4, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant