You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Web workers are broken on legacy mode, althought caiuseit shows it can be used on legacy browsers(IE10+ supports for example non-shared web workers). Not even a warning is displayed to the user.
This could have been filed as a bug request, but I think it's better as a feature.
Suggested solution
I saw the code of the Vite worker plugin, and the initial impression is that plugin-legacy can use a regular expressions on renderChunk to find the locations the expression "new Worker" is defined, find the right worker file it reference, and transform it to legacy using Babel. But:
That's seems much more complicated than it needs to.
Does not work with worker inline import(i.e. inline as a query param in import).
Can we somehow overcome this, maybe by replace the worker constructions with some tokens on transform(), and resolves them later in the renderChunk phase?
This way:
Vite worker plugin will check if the current format isn't system, and only then will emit the workers assets and replace the URL/inlined-code there.
Vite plugin-legacy will do the same only for the system format, and will transform the worker code via Babel to support legacy.
Alternatively, and maybe it will be simpler, we can just check if the current format is system directly in the internal worker plugin. If so, then whenever the plugin build the worker asset, we can build the legacy asset instead, via babel transforming and using terser for minification, the same way that is done on the legacy plugin.
Description
Web workers are broken on legacy mode, althought caiuseit shows it can be used on legacy browsers(IE10+ supports for example non-shared web workers). Not even a warning is displayed to the user.
This could have been filed as a bug request, but I think it's better as a feature.
Suggested solution
I saw the code of the Vite
worker
plugin, and the initial impression is that plugin-legacy can use a regular expressions onrenderChunk
to find the locations the expression "new Worker" is defined, find the right worker file it reference, and transform it to legacy using Babel. But:inline
as a query param in import).Can we somehow overcome this, maybe by replace the worker constructions with some tokens on
transform()
, and resolves them later in therenderChunk
phase?This way:
worker
plugin will check if the current format isn'tsystem
, and only then will emit the workers assets and replace the URL/inlined-code there.system
format, and will transform the worker code via Babel to support legacy.Alternative
No response
Additional context
No response
Validations
The text was updated successfully, but these errors were encountered: