This demonstrates defining custom elements from Svelte components and using them in a non-Svelte web app (React in this case).
This directory defines the Svelte components Greet
and Counter
.
Both specify <svelte:options tag={null} />
.
Using null
instead of a name allows web apps that use the
generated custom elements to define them with any name they choose.
These components are exported from src/custom-elements.js
so the build process doesn't remove them in tree shaking.
The package.json
file here defines the npm script custom-elements
which runs Rollup using rollup.ce-config.js
.
This Rollup config uses src/custom-elements.js
for its input
and passes the customElement: true
prop to the svelte
plugin.
Running npm run custom-elements
produces the file public/build/bundle.js
.
The hope is that this file will contain
JavaScript class definitions for Counter
and Greet
and
that a non-Svelte web app can import these classes and
use them to define custom elements with something like
customElements.define('my-counter', Counter);
and
customElements.define('my-greet', Greet);
.
Currently the generated bundle.js
does not export any class definitions,
so this doesn't work yet.
This directory defines a simple React app that was created using
create-react-app
.
Eventually I hope to modify this to use the two custom elements
created from the Svelte components Counter
and Greet
.