From ce95b51972f3358f0e3a76511829b3481dc6be54 Mon Sep 17 00:00:00 2001 From: allenjiang Date: Sat, 3 Feb 2024 11:44:16 +0800 Subject: [PATCH] Initial commit --- .eslintignore | 13 +++++++++++++ .eslintrc.cjs | 31 +++++++++++++++++++++++++++++++ .gitignore | 10 ++++++++++ .npmrc | 1 + .prettierignore | 4 ++++ .prettierrc | 8 ++++++++ README.md | 38 ++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 0 -> 119064 bytes package.json | 38 ++++++++++++++++++++++++++++++++++++++ playwright.config.ts | 12 ++++++++++++ src/app.d.ts | 13 +++++++++++++ src/app.html | 12 ++++++++++++ src/index.test.ts | 7 +++++++ src/lib/index.ts | 1 + src/routes/+page.svelte | 2 ++ static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 18 ++++++++++++++++++ tests/test.ts | 6 ++++++ tsconfig.json | 18 ++++++++++++++++++ vite.config.ts | 9 +++++++++ 20 files changed, 241 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/index.test.ts create mode 100644 src/lib/index.ts create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 tests/test.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..0b75758 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,31 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..cc41cea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9573023 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..937ac7eecdbbbdee5ba5aad649c4ac96e9ca03b5 GIT binary patch literal 119064 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..bb0056f --- /dev/null +++ b/package.json @@ -0,0 +1,38 @@ +{ + "name": "portfolio", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "test": "npm run test:integration && npm run test:unit", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write .", + "test:integration": "playwright test", + "test:unit": "vitest" + }, + "devDependencies": { + "@playwright/test": "^1.28.1", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@types/eslint": "8.56.0", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vitest": "^1.2.0" + }, + "type": "module" +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..1c5d7a1 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,12 @@ +import type { PlaywrightTestConfig } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + webServer: { + command: 'npm run build && npm run preview', + port: 4173 + }, + testDir: 'tests', + testMatch: /(.+\.)?(test|spec)\.[jt]s/ +}; + +export default config; diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..743f07b --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/index.test.ts b/src/index.test.ts new file mode 100644 index 0000000..e07cbbd --- /dev/null +++ b/src/index.test.ts @@ -0,0 +1,7 @@ +import { describe, it, expect } from 'vitest'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(1 + 2).toBe(3); + }); +}); diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..5982b0a --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH { + await page.goto('/'); + await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..82081ab --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..37b6a84 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [sveltekit()], + test: { + include: ['src/**/*.{test,spec}.{js,ts}'] + } +});