Skip to content

vite: no enforce: "post" - #8627

Merged
pcattori merged 2 commits into
devfrom
pedro/vite-no-enforce-post
Jan 30, 2024
Merged

pcattori merged 2 commits into
devfrom
pedro/vite-no-enforce-post

Conversation

@pcattori

@pcattori pcattori commented Jan 29, 2024 •

Copy link
Copy Markdown
Contributor

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.

@changeset-bot

changeset-bot Bot commented Jan 29, 2024 •

Copy link
Copy Markdown

🦋 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

@pcattori
pcattori force-pushed the pedro/vite-no-enforce-post branch from 819a425 to 428d6fb Compare January 29, 2024 19:46
"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 force-pushed the pedro/vite-no-enforce-post branch from 428d6fb to eb7d570 Compare January 30, 2024 00:58
@pcattori
pcattori merged commit cbaacd0 into dev Jan 30, 2024
@pcattori
pcattori deleted the pedro/vite-no-enforce-post branch January 30, 2024 01:53
@github-actions

Copy link
Copy Markdown
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!

@github-actions

github-actions Bot commented Feb 1, 2024

Copy link
Copy Markdown
Contributor

🤖 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!

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