sveltekit-starter

Opinionated starter template for SvelteKit

Svelte-world is akin to the fiery aftermath when the universes of Mad Max and Split collide - full of peril, violent sandstorms and new beginnings with a touch of disassociative personality 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.

Usage

Step 1: Create Svelte

Generate the base template using create-svelte with these recommended options:

  • Skeleton or Library project
  • JavaScript with JSDoc comments
  • Include ESLint, Prettier and Playwight
$ npm create svelte@latest my-app

Step 2: Run the combo-patcher

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

Step 3: Update dependencies

Finally, apply the finishing touches.

$ cd my-app
$ npm update --save
$ npm run format

Opinions

SvelteKit

Base create-svelte skeleton template with jsdoc, prettier, eslint and playwright.

Tailwind CSS

Adds tailwindcss and prettier-plugin-tailwindcss using svelte-add, then adds tailwindcss/typography.

Prettier config

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
}

ESLint config

Add defence against no-semi:

module.exports = {
  //...
  rules: {
    'no-tabs': 'error',
    'no-unexpected-multiline': 'error'
  }
}

Static site setup

Seriously, don't use SSR unless you really need to. Installs adapter-static and adds sensible defaults.

Versioning

Use the version from package.json in SvelteKit's native versioning system, like so:

import { version } from '$app/environment' // `version` string from `package.json`

Fonts

Use @fontsource-variable for self-hosted open-source fonts.

Icons

Use @iconify/tailwind plugin for high-performance css-only icons. Apply icon classes using icon-[{prefix}--{name}]. Install icon sets at @iconify-json/{prefix}. Set icon size using standard tw classes eg. h-6 w-6. Only icons you use will be included in your build. Read more at Iconify.

License

ISC

Top categories

svelte logo

Want a Svelte site built?

Hire a Svelte developer
Loading Svelte Themes