Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
73 lines
3.7 KiB
Markdown
73 lines
3.7 KiB
Markdown

|
|
|
|
# Stencil Component Starter
|
|
|
|
This is a starter project for building a standalone Web Component using Stencil.
|
|
|
|
Stencil is also great for building entire apps. For that, use the [stencil-app-starter](https://github.com/ionic-team/stencil-app-starter) instead.
|
|
|
|
# Stencil
|
|
|
|
Stencil is a compiler for building fast web apps using Web Components.
|
|
|
|
Stencil combines the best concepts of the most popular frontend frameworks into a compile-time rather than run-time tool. Stencil takes TypeScript, JSX, a tiny virtual DOM layer, efficient one-way data binding, an asynchronous rendering pipeline (similar to React Fiber), and lazy-loading out of the box, and generates 100% standards-based Web Components that run in any browser supporting the Custom Elements v1 spec.
|
|
|
|
Stencil components are just Web Components, so they work in any major framework or with no framework at all.
|
|
|
|
## Getting Started
|
|
|
|
To start building a new web component using Stencil, clone this repo to a new directory:
|
|
|
|
```bash
|
|
git clone https://github.com/ionic-team/stencil-component-starter.git my-component
|
|
cd my-component
|
|
git remote rm origin
|
|
```
|
|
|
|
and run:
|
|
|
|
```bash
|
|
npm install
|
|
npm start
|
|
```
|
|
|
|
To build the component for production, run:
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
To run the unit tests for the components, run:
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
Need help? [Check out our docs](https://stenciljs.com/docs/my-first-component).
|
|
|
|
## Naming Components
|
|
|
|
When creating new component tags, we recommend _not_ using `stencil` in the component name (ex: `<stencil-datepicker>`). This is because the generated component has little to nothing to do with Stencil; it's just a web component!
|
|
|
|
Instead, use a prefix that fits your company or any name for a group of related components. For example, all of the Ionic generated web components use the prefix `ion`.
|
|
|
|
## Using this component
|
|
|
|
### Script tag
|
|
|
|
- [Publish to NPM](https://docs.npmjs.com/getting-started/publishing-npm-packages)
|
|
- Put a script tag similar to this `<script src='https://unpkg.com/my-component@0.0.1/dist/mycomponent.js'></script>` in the head of your index.html
|
|
- Then you can use the element anywhere in your template, JSX, html, etc.
|
|
|
|
### Node Modules
|
|
|
|
- Run `npm install my-component`
|
|
- Put a script tag similar to this `<script src='node_modules/my-component/dist/mycomponent.js'></script>` in the head of your index.html
|
|
- Then you can use the element anywhere in your template, JSX, html, etc.
|
|
|
|
### In a stencil-starter app
|
|
|
|
- Run `npm install my-component`
|
|
- Add an import to the npm packages `import my-component;`
|
|
- Then you can use the element anywhere in your template, JSX, html, etc.
|