https://github.com/repalash/svelte-tailwind-ts-starter
Starter template for Svelte + TailwindCSS + Typescript + HeroIcons apps with experimental HMR support for svelte in Rollup.
https://github.com/repalash/svelte-tailwind-ts-starter
heroicons hot-module-replacement hot-reload rollup svelte svelte3 tailwindcss typescript
Last synced: 4 months ago
JSON representation
Starter template for Svelte + TailwindCSS + Typescript + HeroIcons apps with experimental HMR support for svelte in Rollup.
- Host: GitHub
- URL: https://github.com/repalash/svelte-tailwind-ts-starter
- Owner: repalash
- Created: 2021-06-14T19:36:37.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-06-14T19:37:12.000Z (over 4 years ago)
- Last Synced: 2025-01-17T10:12:10.612Z (9 months ago)
- Topics: heroicons, hot-module-replacement, hot-reload, rollup, svelte, svelte3, tailwindcss, typescript
- Language: JavaScript
- Homepage:
- Size: 11.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Svelte + TailwindCSS + RollupJS Hot + Typescript + Icons starter
Starter template for [Svelte](https://svelte.dev) + [TailwindCSS](https://tailwindcss.com) + [Typescript](https://www.typescriptlang.org/) + [HeroIcons](https://heroicons.com/) apps with experimental HMR support for svelte in [Rollup](https://rollupjs.org/).
Fork of: https://github.com/breadthe/svelte-tailwind2-starter
Added HeroIcons, Typescript and Hot Module Replacement with nollup ( from: https://github.com/rixo/svelte-template-hot ).
It has built-in support for TailwindCSS 2.0, while the bundling is handled by Rollup.
There's also a simple dark/light mode switch

## Get started
Install the dependencies...
```bash
cd svelte-app
npm install
```...then start [Rollup](https://rollupjs.org):
```bash
npm run dev
```
This will run development environment with HMR.Navigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`.
## Building and running in production mode
To create an optimised (production) version of the app:
```bash
npm run build
```You can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com).
## Single-page app mode
By default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.
If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `"start"` command in package.json:
```
"start": "sirv public --single"
```## Deploying to the web
### With [now](https://zeit.co/now)
Install `now` if you haven't already:
```bash
npm install -g now
```Then, from within your project folder:
```bash
cd public
now deploy --name my-project
```As an alternative, use the [Now desktop client](https://zeit.co/download) and simply drag the unzipped project folder to the taskbar icon.
### With [surge](https://surge.sh/)
Install `surge` if you haven't already:
```bash
npm install -g surge
```Then, from within your project folder:
```bash
npm run build
surge public my-project.surge.sh
```## 🚨 Limitations
In **development** mode (running `npm run dev` / `yarn dev`), the CSS bundle includes *all* of TailwindCSS and weighs in at ~6.8MB. You don't want to deploy this to production.
In **production** mode (running `npm run build` / `yarn build`), all the unused CSS styles are purged, dropping the bundle to a much more manageable size (~7KB in this case). However, I haven't yet found a way to stop Tailwind from purging dynamic Svelte classes (such as `class:dark` or `class:from-blue-700={$dark}`).
As a result, the production bundle won't contain such dynamic classes. To get around this, in `tailwind.config.js`, under `purge`, add an `options` object with a `safelist` array containing all the classes you wish to protect from purging:
```diff
purge: {
enabled: production,
content: [
'./src/**/*.html',
'./src/**/*.svelte',
],
options: {
safelist: [
'border-blue-300',
'border-orange-500',
'border-pink-100',
'border-pink-900',
'dark',
'from-blue-500',
'from-blue-700',
'from-yellow-200',
'text-pink-100',
'text-pink-900',
'to-blue-800',
'to-pink-300',
'to-purple-800',
'to-yellow-500',
],
}
},
```