feat(assets): allow new URL to resolve package assets#7837
feat(assets): allow new URL to resolve package assets#7837patak-cat merged 5 commits intovitejs:mainfrom
new URL to resolve package assets#7837Conversation
|
I've resolved this by including the assets plugin for |
|
Thanks for your PR. But I'm not sure if this is necessary, because the type of new URL is constructor (input: string, base?: string | URL);the second params is base, if you support the Maybe |
because the plugin only run in build mode. vite/packages/vite/src/node/build.ts Line 317 in fc37bdc You can refer to vite/packages/vite/src/node/plugins/workerImportMetaUrl.ts Lines 149 to 155 in fc37bdc You can also add this logic here and supplementary documentation if you like |
e833819 to
cfb8b39
Compare
As far as I can tell, this plugin is for transforming code that uses edit: I've extended support to worker URLs using |
4d4d33a to
5c144a6
Compare
3624717 to
cb410a4
Compare
|
fix: #7779 |
bluwy
left a comment
There was a problem hiding this comment.
Thanks for bringing this to a great state so far. I have some suggestions and questions below. Feel free to let me know if you have any concerns!
e0d1a81 to
4821baa
Compare
|
All done, this is ready! |
a301ec3 to
50c19ca
Compare
@bluwy I do believe this is the case already. The resolver I created uses the project root, and then has a special fallback vite/packages/vite/src/node/plugins/assetImportMetaUrl.ts Lines 79 to 88 in 899caaf In this way, both vite/packages/vite/src/node/server/middlewares/transform.ts Lines 118 to 147 in f6bd317 |
|
@bluwy anything I can do here? I should be able to find time to rebase this soon. |
5aa4769 to
053a33a
Compare
This tests existing behavior for obtaining an asset's URL from the public base path.
This test fails because the worker plugin's renderChunk hook runs its import.meta.url transformation after Rollup already has transformed it with importMeta.renderFinalMechanism.
|
This is ready again, would really like to see this released in the near future! |
|
Are the macOS tests flaky in CI? Neither of the last two runs seem to be related to these changes |
|
Looks like forth times a charm. I hope this isn't caused by this PR, plus the test failure logs seem unrelated. |
|
@kherock I think this is a great feature, but we'd need a team meeting to confirm it. It's planned for 3.2 now, but if there's any merge conflicts in the future I can help with resolving it. |
Description
This change allows modules to resolve asset URLs for assets located underneath a package path. E.g.
new URL('@scope/component/assets/logo.png', import.meta.url)close #6918
Additional context
I Implemented this in a backwards-compatible way by using a resolver which prefers relative paths and makes the root path resolve to the public base path.
What is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
fixes #123).