This repository has been archived by the owner on Apr 6, 2023. It is now read-only.
fix(vite, webpack): generate composable keys based on order #6191
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.
π Linked issue
resolves nuxt/nuxt#14442
β Type of change
π Description
Introduced in #4955, we were creating hashed based on code index. But this differs between server + client for vue components (among others) due to differences in the code generated in the two environments. However, I think the order of keyed composables is more solid and likely to remain fixed between client/server.
Other approaches I also tried:
using sourcemaps to get original LOC - I think the best approach conceptually. This did not match however (1 line out), surprisingly, due to a bug (I think) in vite's vue plugin - I'll need to investigate further and report. Additionally, we don't yet have isomorphic support for sourcemaps in unplugin (expose sourcemap utilities via
this
contextΒ unjs/unplugin#146) so it would add some complexity for webpack.moving the key generation 'up' to earlier in the pipeline (via
enforce: pre
). Also much more reliable as an approach. This would work except that acorn can't handle TS. I could add an additional esbuild transform in before parsing with acorn, but it felt like this would be too heavy.π Checklist