Add generic file support to assets#11355
Draft
markdalgleish wants to merge 4 commits into
Draft
Conversation
Contributor
Preview Build AvailableA preview build has been created for this PR. You can install it using: pnpm install "remix-run/remix#preview/pr-11355&path:packages/remix"This preview build will be updated automatically as you push new commits. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds file asset support to
@remix-run/assetssocreateAssetServer()can serve configured leaf assets like images and fonts alongside compiled scripts and styles from the same URL namespace.As part of that, the asset server can now rewrite relative CSS
url()references when they resolve to configured file assets, andgetHref()can generate request URLs for named file transform pipelines with the same fingerprinting and watch-mode invalidation behavior as direct file requests.filesoption tocreateAssetServer()with explicitextensions, optionalglobalTransforms, namedtransforms,maxRequestTransforms, and transformed-outputcachedefineFileTransform()so request transforms can declare whether they accept no param, a required string param, or an optional string paramurl()references to asset server URLs when they resolve to configured file assets, while leaving external, root-relative,data:, and fragment-only URLs unchangedtransform=name[:param]search params in URLs, while keeping tuple-based authoring inassetServer.getHref(..., { transform })assetsREADME and demo app to show direct file serving, transformed SVG variants, CSS background images, and transformed-output cachingBasic usage:
You can also use relative paths with transforms in CSS files and these will be resolved at compilation time: