Svelte has a pretty nice support for this via https://svelte.dev/docs/svelte/custom-elements
It's not a no-build option though.