Svelte 3 Component Template
Table of Contents
- Features
- Getting started
- Developing
- Consuming components
- Backward Compatibility
- Preprocessors
- Testing
- Publishing to npm
- Frequently Asked Questions
- Credits & Inspiration
Features
- Autoprefixing CSS
- Preprocessing
- Formating
- Linting
- Testing
- Storybook
Getting Started
-
Choose your template (regular/monorepo)
-
Clone it with degit:
npx degit YogliB/svelte-component-template my-new-component
or
npx degit "YogliB/svelte-component-template#monorepo" my-new-component
-
cd
into the folder and install thenode_modules
:
cd my-new-component
git init
npm install
or:
yarn
- For monorepo run:
npm run bootstrap
or:
yarn bootstrap
- Run
npm init
, to configure the project.
Your component's source code lives in src/components/[Footer].svelte
.
Developing
- Start Rollup:
npm run dev
-
Edit a component file in
src/components
, save it and watch the magic happens. -
Make sure your component is exported in
src/components/index.js
. -
Make sure your component is imported and nested in
src/App.svelte
, so you can preview and test it. -
Navigate to localhost:5000 to see your components live.
Consuming Components
Your package.json has a "svelte"
field pointing to src/components/index.js
, which allows Svelte apps to import the source code directly, if they are using a bundler plugin like rollup-plugin-svelte or svelte-loader (where resolve.mainFields
in your webpack config includes "svelte"
).
Backward Compatibility
This template uses svelte-preprocess in order to integrate PostCSS auto-prefixing capabilities & Babel's transpiling capabilities into the build process.
Browserlist
PostCSS
uses browserlist under the hood, in order to "know" what css to prefix.
The browserlist
configuration is located inside the package.json
.
Preprocessors
This template comes with the svelte-preprocess by default, which simplifies the use of preprocessors in components.
Usage
Getting Started with svelte-preprocess.
- To configure svelte-preprocess use the
sveltePreprocessConfig
variable in./preprocess.js
Testing
This template uses Cypress & testing-library for testing.
It is highly recommended going through their docs if you intend on testing your components.
You can witness a simple example by running npm run cy:open
.
Frequently Asked Questions
index.js
file for?
What's the It's for Svelte to be able to import multiple components from a single source.
For instance, it lets the user do:
import { Footer, MyOtherComponent } from 'my-component-library';
Instead of:
import Footer from 'my-component-library/components/Footer.svelte';
import MyOtherComponent from 'my-component-library/components/MyOtherComponent';
How do I include 3'rd party css in my components?
There are a few options to do this:
- Don't include 3'rd party css and just tell your users to do that (Probably using PostCSS).
- Include it via a cdn, like so:
@import url('https://unpkg.com/@scope/package/main.min.css');
npm
Publishing toCredits & Inspiration
- Official component-template by @Rich-Harris
- Official app-template by @Rich-Harris
- This PR by @sisou
- This PR by @BlackFenix2