richardtallent / vite-plugin-singlefile

Vite plugin for inlining JavaScript and CSS resources
MIT License
808 stars 53 forks source link

Support Web Worker files (eg. autocomplete.worker.js?worker syntax) #100

Open tysonstolarski opened 1 month ago

tysonstolarski commented 1 month ago

It looks like web worker js files with the ?worker suffix are ignored by this plugin.

My app uses an import such as:

import AutocompleteWorker from "@/autocomplete.worker.js?worker";

My output produces:

npm run build

build vite build

vite v5.3.3 building for production... ✓ 293 modules transformed. rendering chunks (1)...

Inlining: index-CIvNPwLS.js Inlining: style-BvRGwxcl.css dist/autocomplete.worker-CFomeDza.js 90.96 kB dist/index.html 1,964.05 kB

I think it's just a matter of updating the isJsFile regex at https://github.com/richardtallent/vite-plugin-singlefile/blob/main/src/index.ts#L42 ?

unit-404 commented 1 month ago

Same issues with Service Worker... not able to ignore such patters, even despite of !service.mjs or !(service).mjs.

nikoPLP commented 1 month ago

using let worker_import = await import("@x.worker.js?worker&inline"); worked for me

tysonstolarski commented 1 month ago

@nikoPLP yes, but that's making a packaging decision at all the call sites for web/service workers. Ideally the application code stays agnostic to how the final scripts are bundled up, and it's just the configuration of this singlefile plugin that controls inlining vs normal vite packaging.