I use HTML5, JS, and CSS to code. I got lucky, and only need to directly upload my files. Going from web version to downloadable is actually difficult for me.
Going the other way has one trap that costs an evening if you have not hit it before.
An HTML5 game wrapped for desktop usually ends up loaded from a file:// URL rather than from a local http server, and fetch and XMLHttpRequest are both blocked on file:// origins. So if your game loads anything at runtime, an audio file, a texture atlas, a level JSON, those calls fail while the rest of the game runs fine. The window opens, the loop runs, and you get a silent game with missing art rather than an error pointing at the cause.
Two fixes, either works. Serve the files over a local http server inside the wrapper, which is what Electron and Tauri will do if you point them at a server rather than at a path. Or inline the assets as data URIs at build time so nothing is fetched at all.
We hit this on our own build and measured it both ways: identical bytes, correct over http, silent and textureless from file://. Worth knowing before you package rather than after.