From 01c26e533151d39e786ba09fab35749b43c138c2 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 14 Feb 2025 16:14:31 -0500 Subject: [PATCH] [+] Init --- .gitignore | 24 ++++++++++++ .vscode/extensions.json | 3 ++ README.md | 47 ++++++++++++++++++++++++ bun.lockb | Bin 0 -> 34443 bytes index.html | 13 +++++++ package.json | 20 ++++++++++ public/vite.svg | 1 + src/App.svelte | 47 ++++++++++++++++++++++++ src/app.css | 79 ++++++++++++++++++++++++++++++++++++++++ src/assets/svelte.svg | 1 + src/lib/Counter.svelte | 10 +++++ src/main.ts | 9 +++++ src/vite-env.d.ts | 2 + svelte.config.js | 7 ++++ tsconfig.app.json | 20 ++++++++++ tsconfig.json | 7 ++++ tsconfig.node.json | 24 ++++++++++++ vite.config.ts | 7 ++++ 18 files changed, 321 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 README.md create mode 100644 bun.lockb create mode 100644 index.html create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.svelte create mode 100644 src/app.css create mode 100644 src/assets/svelte.svg create mode 100644 src/lib/Counter.svelte create mode 100644 src/main.ts create mode 100644 src/vite-env.d.ts create mode 100644 svelte.config.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..bdef820 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["svelte.svelte-vscode"] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..e6cd94f --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# Svelte + TS + Vite + +This template should help get you started developing with Svelte and TypeScript in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). + +## Need an official Svelte framework? + +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. + +## Technical considerations + +**Why use this over SvelteKit?** + +- 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. + +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. + +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. + +**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** + +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. + +**Why enable `allowJs` in the TS template?** + +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) +``` diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..78e2420fef8f5643345808575ce9cbb913e37b4f GIT binary patch literal 34443 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..b6c5f0a --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + Svelte + TS + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..fa996e2 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "rana", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.3", + "@tsconfig/svelte": "^5.0.4", + "svelte": "^5.19.6", + "svelte-check": "^4.1.4", + "typescript": "~5.7.2", + "vite": "^6.1.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.svelte b/src/App.svelte new file mode 100644 index 0000000..f75b68a --- /dev/null +++ b/src/App.svelte @@ -0,0 +1,47 @@ + + +
+ +

Vite + Svelte

+ +
+ +
+ +

+ Check out SvelteKit, the official Svelte app framework powered by Vite! +

+ +

+ Click on the Vite and Svelte logos to learn more +

+
+ + diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..617f5e9 --- /dev/null +++ b/src/app.css @@ -0,0 +1,79 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +.card { + padding: 2em; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/assets/svelte.svg b/src/assets/svelte.svg new file mode 100644 index 0000000..c5e0848 --- /dev/null +++ b/src/assets/svelte.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/Counter.svelte b/src/lib/Counter.svelte new file mode 100644 index 0000000..37d75ce --- /dev/null +++ b/src/lib/Counter.svelte @@ -0,0 +1,10 @@ + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..664a057 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,9 @@ +import { mount } from 'svelte' +import './app.css' +import App from './App.svelte' + +const app = mount(App, { + target: document.getElementById('app')!, +}) + +export default app diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..4078e74 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 0000000..b0683fd --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,7 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), +} diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..55a2f9b --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true, + "moduleDetection": "force" + }, + "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..db0becc --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..d32eba1 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [svelte()], +})