aboutsummaryrefslogtreecommitdiff
path: root/web/README.md
diff options
context:
space:
mode:
authorgammelalf <gammelalf@hopfen.space>2023-01-25 21:22:38 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2023-02-24 12:47:40 +0100
commitc0c4bea988208f75fa4534b807a026de3f619eaf (patch)
tree5e46b190f877ce4af8a6134c9f33a05c120a94c3 /web/README.md
parent933e3b7e5a3a18a8c3f315f6c0d8c2375ceecb3c (diff)
downloadWRMS-c0c4bea988208f75fa4534b807a026de3f619eaf.tar.gz
WRMS-c0c4bea988208f75fa4534b807a026de3f619eaf.zip
Switched from SvelteKit to Svelte
Diffstat (limited to 'web/README.md')
-rw-r--r--web/README.md57
1 files changed, 33 insertions, 24 deletions
diff --git a/web/README.md b/web/README.md
index 5c91169..156efd9 100644
--- a/web/README.md
+++ b/web/README.md
@@ -1,38 +1,47 @@
-# create-svelte
+# Svelte + TS + Vite
-Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
+This template should help get you started developing with Svelte and TypeScript in Vite.
-## Creating a project
+## Recommended IDE Setup
-If you're seeing this, you've probably already done this step. Congrats!
+[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
-```bash
-# create a new project in the current directory
-npm create svelte@latest
+## Need an official Svelte framework?
-# create a new project in my-app
-npm create svelte@latest my-app
-```
+Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
-## Developing
+## Technical considerations
-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+**Why use this over SvelteKit?**
-```bash
-npm run dev
+- It brings its own routing solution which might not be preferable for some users.
+- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
-```
+This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
-## Building
+Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
-To create a production version of your app:
+**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
-```bash
-npm run build
-```
+Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
+
+**Why include `.vscode/extensions.json`?**
+
+Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
-You can preview the production build with `npm run preview`.
+**Why enable `allowJs` in the TS template?**
-> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
+While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
+
+**Why is HMR not preserving my local component state?**
+
+HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).
+
+If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
+
+```ts
+// store.ts
+// An extremely simple external store
+import { writable } from 'svelte/store';
+export default writable(0);
+```