Skip to content

docs: blog post on parserOptions.projectService #8031

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

JoshuaKGoldberg
Copy link
Member

@JoshuaKGoldberg JoshuaKGoldberg commented Dec 6, 2023

PR Checklist

Overview

Adds a blog post that describes using parserOptions.projectService (what we previously called parserOptions.EXPERIMENTAL_useProjectService). The flow is roughly:

  1. Introduction: the old situation & an overview of the blog post
  2. Configuration: how to switch over & replace traditional config kludge
  3. Predictability: benefits of the new API & not having tsconfig.eslint.jsons
  4. Scalability: project references support! 🙌
  5. Performance: noting that it's theoretically faster, but not always -- and that that's being treated as a bug
  6. Next steps: feedback, the standalone package, and hope for typescript-go

This was previously blocked on:

This previously had a lot more content on single-run mode and performance comparisons. Both are removed for a more streamlined blog post.

💖

@typescript-eslint
Copy link
Contributor

Thanks for the PR, @JoshuaKGoldberg!

typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community.

The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately.

Thanks again!


🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint.

Copy link

netlify bot commented Dec 6, 2023

Deploy Preview for typescript-eslint ready!

Name Link
🔨 Latest commit d598bb9
🔍 Latest deploy log https://app.netlify.com/projects/typescript-eslint/deploys/683859a1ade60c00088e128e
😎 Deploy Preview https://deploy-preview-8031--typescript-eslint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 99 (🟢 up 2 from production)
Accessibility: 100 (no change from production)
Best Practices: 100 (no change from production)
SEO: 98 (no change from production)
PWA: 80 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Member

@Josh-Cena Josh-Cena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to see exciting features

Co-authored-by: Joshua Chen <sidachen2003@gmail.com>
Copy link

nx-cloud bot commented May 11, 2024

View your CI Pipeline Execution ↗ for commit d598bb9.

Command Status Duration Result
nx run-many -t typecheck ✅ Succeeded 1m 51s View ↗
nx test eslint-plugin-internal --coverage=false ✅ Succeeded <1s View ↗
nx run types:build ✅ Succeeded <1s View ↗
nx run-many -t lint ✅ Succeeded 8s View ↗
nx test typescript-estree --coverage=false ✅ Succeeded <1s View ↗
nx test eslint-plugin --coverage=false ✅ Succeeded <1s View ↗
nx typecheck ast-spec ✅ Succeeded <1s View ↗
nx run integration-tests:test ✅ Succeeded <1s View ↗
Additional runs (29) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2025-05-29 13:05:52 UTC

@JoshuaKGoldberg
Copy link
Member Author

Status update: this is roughly ready for review except parserOptions.projectService no longer outperforms parserOptions.project. That's being investigated in #9571. If we don't get enough fixes on our end & TypeScript's by the time v8 is meant to go stable, we'll have to rephrase the ⚡ Performance section.

@JoshuaKGoldberg JoshuaKGoldberg added the blocked by another PR PRs which are ready to go but waiting on another PR label Jul 18, 2024
@JoshuaKGoldberg JoshuaKGoldberg marked this pull request as ready for review May 21, 2025 16:00

As of typescript-eslint@8.33.0, we've also extracted most of the Project Service code into a standalone [`@typescript-eslint/project-service`](/packages/project-service) package.
It has no dependencies on ESLint and is designed to be usable for any linter to enable TypeScript's Project Service API for typed linting.
See [Packages > Project Service](/packages/project-service) for more details.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that #10383 (comment) proposes a pretty big shake-up in other packages. I don't think it impacts this though. Just an FYI :)

kirkwaiblinger
kirkwaiblinger previously approved these changes May 28, 2025
ronami
ronami previously approved these changes May 28, 2025
Copy link
Member

@ronami ronami left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀🚀

@JoshuaKGoldberg JoshuaKGoldberg dismissed stale reviews from ronami and kirkwaiblinger via e791a1f May 29, 2025 12:52
JoshuaKGoldberg and others added 4 commits May 29, 2025 15:52
@JoshuaKGoldberg JoshuaKGoldberg merged commit 02ebbe1 into typescript-eslint:main May 29, 2025
63 checks passed
@JoshuaKGoldberg JoshuaKGoldberg deleted the blog-parser-options-project-service branch May 29, 2025 13:10
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 6, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Docs: Add blog post & revamped docs for parserOptions.projectService
10 participants