Skip to content

chore: modularize server code #12596

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

Merged
merged 17 commits into from
Jul 25, 2024
Merged

chore: modularize server code #12596

merged 17 commits into from
Jul 25, 2024

Conversation

Rich-Harris
Copy link
Member

One thing that I've been wanting to do for a long time, but which #12530 really brought to a head, is to modularize certain parts of the codebase a lot more. It's just no good to have modules with multiple thousands of lines of code — it's impossible to create a good mental map of the codebase, and it leads to a messy and disorganized structure. It's much easier to repeatedly toggle between two side-by-side modules than it is to repeatedly scroll up and down a thousand lines, past reams of stuff that's irrelevant to my current task, when dealing with two interconnected functions.

There are other benefits:

  • in the same way that it's very easy to find the runtime code for if blocks by doing Cmd-P if in VSCode, it's much easier to find the compiler code if I can do Cmd-P serIfB to find an IfBlock.js inside a server directory. Right now I tend to do Cmd-Shift-F and search for IfBlock( which is much slower (have to use keyboard and mouse together to avoid painful keyboard-only navigation, and can't use fuzzy matching)
  • PRs are easier to review — less likely to hit GitHub's stupid 'we only show small diffs by default' limit, and the 'viewed' checkbox is more useful when you don't have a single file with hundreds of changed lines
  • git history is more useful — you can more easily see which files were recently changed, etc

I'm starting with server transform visitors, because that's probably the least disruptive place to get the hang of this, but it's far from the only part of the codebase that needs this treatment.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Copy link

changeset-bot bot commented Jul 24, 2024

⚠️ No Changeset found

Latest commit: 0591162

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@Rich-Harris Rich-Harris merged commit 75ea6da into main Jul 25, 2024
9 checks passed
@Rich-Harris Rich-Harris deleted the modularize-server-code branch July 25, 2024 13:51
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.

2 participants