Opinionated starter template for SvelteKit
The Svelte ecosystem is akin to the fiery aftermath when the worlds of Mad Max and Split collide - full of peril, violent sandstorms and new beginnings with a touch of dissociative identity disorder.
To help navigate through this madness, just like how Moses parted the Red Sea, behold the emergence of this repo. Cue angels singing. The best way to describe this is it's like a brick-layer - but instead of bricks are Svelte's somewhat arbitrary building blocks. And instead of cement are my opinions.
So let's get started.
Generate the base template using create-svelte
with these recommended options:
- Skeleton or Library project
- JavaScript with JSDoc comments
- Include ESLint, Prettier and Playwright
$ npm create svelte@latest my-app
Then, layer the patches based on the last-known SvelteKit decisions. This uses
zx
, so make sure that's installed.
$ zx https://cdn.jsdelivr.net/gh/zerodevx/svelte-starter@2/index.mjs my-app
Finally, apply the finishing touches.
$ cd my-app
$ npm update --save
$ npm run format
Base create-svelte
skeleton template with jsdoc
, prettier
, eslint
and playwright
.
Adds tailwindcss
and prettier-plugin-tailwindcss
using svelte-add
, then adds
tailwindcss/typography
.
No semicolons; because they're redundant. Also use spaces over tabs - modern code editors handle both well, but spaces display better outside IDEs (I'm looking at you Github).
{
//...
"printWidth": 100,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"proseWrap": "always",
"svelteSortOrder": "options-scripts-markup-styles",
"svelteIndentScriptAndStyle": false
}
Add defence against no-semi
:
{
//...
"rules": {
"no-tabs": "error",
"no-unexpected-multiline": "error"
}
}
Seriously, don't use SSR unless you really need to. Installs adapter-static
and adds sensible
defaults.
Use the version
from package.json
in SvelteKit's native versioning system, like so:
import { version } from '$app/environment' // `version` string from `package.json`
Use @fontsource-variable
for self-hosted open-source fonts.
Use @iconify/tailwind
plugin for high-performance css-only icons. Apply icon classes using
iconify {prefix}--{name}
. Install icon sets at @iconify-json/{prefix}
. Set icon size using
standard tailwind classes like text-lg
or w-6 h-6
. Only icons you use will be included in your
build. Read more at Iconify.
ISC