Skip to content
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

fix(css): fix stale css when reloading with hmr disabled (#10270) #11506

Merged
merged 1 commit into from
Jan 4, 2023

Conversation

russelldavis
Copy link
Contributor

Description

Fixes #10270.

In the non-hmr code path, when invalidating a module, it wasn't invalidating the importers. This meant that CSS dynamically generated based on a module's contents (e.g., what tailwind does) would not regenerate when refreshing a page.

The HMR code path already invalidated importers, which is why the bug didn't exist with HMR enabled. This change makes the invalidation consistent between HMR and non-HMR.

The changes are quite minimal -- it's just merging some of the logic from the invalidate function (in hmr.ts) into the invalidateModule function (in moduleGraph.ts) and updating the call site.

What is the purpose of this pull request?

  • Bug fix
  • New Feature
  • Documentation update
  • Other

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

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines and follow the PR Title Convention.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.

In the non-hmr path, when invalidating a module, it wasn't invalidating
the importers. This meant that CSS dynamically generated based on a
module's contents (e.g., what tailwind does) would not regenerate
when refreshing a page.

The HMR code path already invalidated importers, which is why the bug
didn't exist with HMR enabled. This change makes the invalidation
consistent between HMR and non-HMR.
@sapphi-red sapphi-red added feat: hmr p3-minor-bug An edge case that only affects very specific usage (priority) labels Dec 31, 2022
Copy link
Member

@sapphi-red sapphi-red left a comment

Choose a reason for hiding this comment

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

Thanks for the PR!

I'm not too sure, but the code looks good to me.
Also I tested this PR with a simple vue project and it worked with both hmr: true and hmr: false.

Copy link
Member

@patak-dev patak-dev left a comment

Choose a reason for hiding this comment

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

Looks good to me too. Let's merge it in the 4.1 beta next week to be safe.

@patak-dev patak-dev added this to the 4.1 milestone Jan 3, 2023
@patak-dev patak-dev merged commit e5807c4 into vitejs:main Jan 4, 2023
futurGH pushed a commit to futurGH/vite that referenced this pull request Feb 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat: hmr p3-minor-bug An edge case that only affects very specific usage (priority)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Disabling HMR Prevents Tailwind from Updating
3 participants