diff options
| author | gammelalf <gammelalf@hopfen.space> | 2023-01-25 21:22:38 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-02-24 12:47:40 +0100 |
| commit | c0c4bea988208f75fa4534b807a026de3f619eaf (patch) | |
| tree | 5e46b190f877ce4af8a6134c9f33a05c120a94c3 /web/README.md | |
| parent | 933e3b7e5a3a18a8c3f315f6c0d8c2375ceecb3c (diff) | |
| download | WRMS-c0c4bea988208f75fa4534b807a026de3f619eaf.tar.gz WRMS-c0c4bea988208f75fa4534b807a026de3f619eaf.zip | |
Switched from SvelteKit to Svelte
Diffstat (limited to 'web/README.md')
| -rw-r--r-- | web/README.md | 57 |
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); +``` |
