fix: avoid removing double extension for non-preprocessor assets #301
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.
Description 📖
This pull request makes some changes to ensure CSS filenames such as
jquery.tree.css
are not converted tojquery.tree
in theViteRuby::DevServerProxy
.Background 📜
Historically,
stylesheet_link_tag
in Rails did not support passingextname
toasset_path
, causing it to always append.css
to any provided filenames.This is problematic in Vite, because the dev server can serve
file.scss
.For that reason, the
DevServerProxy
needed to convert thatfile.scss.css
tofile.css
.Since it's very uncommon for CSS files to have two extensions, the naive approach of removing the extra
.css
hasn't been a problem in practice, until #300.The Fix 🔨
Restricting this patch to files with a known CSS preprocessor extension. The regex is more verbose, but should cause less problems.
In addition, support for
extname
was added in Rails 7, so in the future it will be possible to stop using this patch in the proxy.