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

vite: no enforce: "post" #8627

Merged
merged 2 commits into from
Jan 30, 2024
Merged

vite: no enforce: "post" #8627

merged 2 commits into from
Jan 30, 2024

Conversation

pcattori
Copy link
Contributor

@pcattori pcattori commented Jan 29, 2024

tl;dr: we were abusing enforce: "post" so that mdx plugin could be place after remix plugin. Instead, we should either expect plugins like mdx to self-declare as pre or rely on Vite plugin ordering.

"Post" plugins are meant primarily for build analysis. Previously we were relying on enforce: "post" to ensure that plugins that transpile other languages to JS/TS ran before the Remix plugin. However, it should be the responsability of those plugins to declare themselves with enforce: "pre". In the case of MDX, the canonical plugin is not a Vite plugin, but rather a Rollup plugin so it cannot set enforce as that is a Vite-only API.

Ideally, someone would wrap the MDX Rollup plugin and declare it as enforce: "pre". This can also be done in userland through a simple object spread.

That said, its simpler to place the MDX plugin before the Remix plugin in the Vite plugins array. Order is semantically meaningful for Vite plugins anyway.

The official Vite React SWC plugin also relies on plugin ordering for MDX.

Copy link

changeset-bot bot commented Jan 29, 2024

🦋 Changeset detected

Latest commit: eb7d570

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@remix-run/dev Patch
create-remix Patch
remix Patch
@remix-run/architect Patch
@remix-run/cloudflare Patch
@remix-run/cloudflare-pages Patch
@remix-run/cloudflare-workers Patch
@remix-run/css-bundle Patch
@remix-run/deno Patch
@remix-run/eslint-config Patch
@remix-run/express Patch
@remix-run/node Patch
@remix-run/react Patch
@remix-run/serve Patch
@remix-run/server-runtime Patch
@remix-run/testing Patch

Not sure what this means? Click here to learn what changesets are.

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

"Post" plugins are meant primarily for build analysis.
Previously we were relying on `enforce: "post"` to ensure that plugins
that transpile other languages to JS/TS ran before the Remix plugin.
However, it should be the responsability of _those_ plugins to declare
themselves with `enforce: "pre"`. In the case of MDX, the canonical
plugin is not a Vite plugin, but rather a Rollup plugin so it cannot set
`enforce` as that is a Vite-only API.

Ideally, someone would wrap the MDX Rollup plugin and declare it as
`enforce: "pre"`. This can also be done in userland through a simple
object spread.

That said, its simpler to place the MDX plugin before the Remix plugin
in the Vite plugins array. Order is semantically meaningful for Vite
plugins anyway.
@pcattori pcattori merged commit cbaacd0 into dev Jan 30, 2024
9 checks passed
@pcattori pcattori deleted the pedro/vite-no-enforce-post branch January 30, 2024 01:53
@github-actions github-actions bot added the awaiting release This issue has been fixed and will be released soon label Jan 30, 2024
Copy link
Contributor

🤖 Hello there,

We just published version 2.6.0-pre.0 which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!

Thanks!

Copy link
Contributor

github-actions bot commented Feb 1, 2024

🤖 Hello there,

We just published version 2.6.0 which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!

Thanks!

@github-actions github-actions bot removed the awaiting release This issue has been fixed and will be released soon label Feb 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant