This commit is contained in:
Sebastian Frank 2020-11-11 16:44:55 +01:00
commit 4466f001a7
Signed by: apairon
GPG Key ID: 7270D06DDA7FE8C3
16 changed files with 7069 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
__temp/
node_modules/
dist/
build/
yarn-error.log

16
.prettierrc Normal file
View File

@ -0,0 +1,16 @@
{
"printWidth": 80,
"tabWidth": 4,
"singleQuote": false,
"trailingComma": "es5",
"semi": false,
"newline-before-return": true,
"no-duplicate-variable": [true, "check-parameters"],
"no-var-keyword": true,
"svelteSortOrder": "markup-styles-scripts",
"svelteStrictMode": true,
"svelteBracketNewLine": true,
"svelteAllowShorthand": true,
"svelteIndentScriptAndStyle": true
}

11
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"eslint.alwaysShowStatus": true,
"tslint.autoFixOnSave": true,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"liveServer.settings.root": "/build"
}

20
README.md Normal file
View File

@ -0,0 +1,20 @@
# Svelte Skeleton with Typescript support and Snowpack bundler
## prepare
`yarn install`
## dev server
`yarn start`
## build and bundle
`yarn bundle`
## start developing
- in `src/` your .ts files
- in `types/`your type definitions
- in `src/components/` your Svelte components
- in `public/` your index.html and static assets (relative to / on webserver)

35
package.json Normal file
View File

@ -0,0 +1,35 @@
{
"name": "skel-svelte-snowpack",
"version": "1.0.0",
"main": "src/index.js",
"author": "Sebastian Frank",
"license": "MIT",
"scripts": {
"validate": "svelte-check && tsc --noEmit",
"start": "snowpack dev",
"build": "snowpack build"
},
"devDependencies": {
"@snowpack/plugin-dotenv": "^2.0.4",
"@snowpack/plugin-svelte": "^3.3.0",
"@snowpack/plugin-typescript": "^1.1.0",
"@snowpack/plugin-webpack": "^2.1.1",
"@snowpack/web-test-runner-plugin": "^0.1.4",
"@tsconfig/svelte": "^1.0.10",
"@types/snowpack-env": "^2.3.2",
"less": "^3.12.2",
"prettier": "^2.1.2",
"prettier-plugin-svelte": "^1.4.1",
"rollup": "^2.33.1",
"snowpack": "^2.17.1",
"svelte": "^3.29.7",
"svelte-check": "^1.1.11",
"svelte-hmr": "^0.11.6",
"svelte-preprocess": "^4.0.8",
"tslib": "^2.0.3",
"typescript": "^4.0.0",
"webpack-bundle-analyzer": "^4.1.0"
},
"dependencies": {},
"browserslist": ">0.5%, ie 11, not dead"
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

24
public/index.html Normal file
View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Web site created using create-snowpack-app" />
<title>Snowpack App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<script type="module" src="/_dist_/index.js"></script>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

4
public/logo.svg Normal file
View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98.1 118">
<path fill="#ff3e00" d="M91.8 15.6C80.9-.1 59.2-4.7 43.6 5.2L16.1 22.8A31.25 31.25 0 001.9 43.9c-1.3 7.3-.2 14.8 3.3 21.3-2.4 3.6-4 7.6-4.7 11.8-1.6 8.9.5 18.1 5.7 25.4 11 15.7 32.6 20.3 48.2 10.4l27.5-17.5c7.5-4.7 12.7-12.4 14.2-21.1 1.3-7.3.2-14.8-3.3-21.3 2.4-3.6 4-7.6 4.7-11.8 1.7-9-.4-18.2-5.7-25.5"/>
<path fill="#fff" d="M40.9 103.9a21.8 21.8 0 01-23.4-8.7c-3.2-4.4-4.4-9.9-3.5-15.3l.6-2.6.5-1.6 1.4 1c3.3 2.4 6.9 4.2 10.8 5.4l1 .3-.1 1c-.1 1.4.3 2.9 1.1 4.1a6.62 6.62 0 008.8 2L65.5 72c1.4-.9 2.3-2.2 2.6-3.8.3-1.6-.1-3.3-1-4.6a6.56 6.56 0 00-8.8-1.9l-10.5 6.7a18.6 18.6 0 01-5.6 2.4 21.8 21.8 0 01-23.4-8.7 20.2 20.2 0 01-3.4-15.3c.9-5.2 4.1-9.9 8.6-12.7l27.5-17.5c1.7-1.1 3.6-1.9 5.6-2.5a21.8 21.8 0 0123.4 8.7c3.2 4.4 4.4 9.9 3.5 15.3-.2.9-.4 1.7-.7 2.6l-.5 1.6-1.4-1c-3.3-2.4-6.9-4.2-10.8-5.4l-1-.3.1-1c.1-1.4-.3-2.9-1.1-4.1a6.56 6.56 0 00-8.8-1.9L32.4 46.1c-1.4.9-2.3 2.2-2.6 3.8s.1 3.3 1 4.6a6.56 6.56 0 008.8 1.9l10.5-6.7c1.7-1.1 3.6-1.9 5.6-2.5a21.8 21.8 0 0123.4 8.7c3.2 4.4 4.4 9.9 3.5 15.3-.9 5.2-4.1 9.9-8.6 12.7l-27.5 17.5c-1.7 1.1-3.6 1.9-5.6 2.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

3
public/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

49
snowpack.config.js Normal file
View File

@ -0,0 +1,49 @@
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer")
.BundleAnalyzerPlugin
/** @type {import("snowpack").SnowpackUserConfig } */
module.exports = {
mount: {
public: "/",
src: "/_dist_",
},
plugins: [
"@snowpack/plugin-svelte",
"@snowpack/plugin-dotenv",
"@snowpack/plugin-typescript",
[
"@snowpack/plugin-webpack",
{
sourceMap: false,
extendConfig: (config) => {
config.plugins.push(
new BundleAnalyzerPlugin({
analyzerMode: "static",
openAnalyzer: false,
})
)
return config
},
},
],
],
install: [
/* ... */
],
installOptions: {
sourceMap: false,
},
devOptions: {
/* ... */
},
buildOptions: {
sourceMaps: false,
clean: true,
},
proxy: {
/* ... */
},
alias: {
/* ... */
},
}

18
src/components/App.svelte Normal file
View File

@ -0,0 +1,18 @@
<svelte:head>
<title>Svelte Skeleton</title>
</svelte:head>
<h1>Svelte Skeleton</h1>
{welcome}
<style>
h1 {
color: darkred;
}
</style>
<script lang="typescript">
let welcome = "Hello World"
</script>

20
src/index.ts Normal file
View File

@ -0,0 +1,20 @@
import App from "./components/App.svelte"
const app = new App({
target: document.body,
props: {},
})
export default app
// Hot Module Replacement (HMR) - Remove this snippet to remove HMR.
// Learn more: https://www.snowpack.dev/#hot-module-replacement
// @ts-ignore
if (import.meta?.hot) {
// @ts-ignore
import.meta.hot.accept()
// @ts-ignore
import.meta.hot.dispose(() => {
app.$destroy()
})
}

8
svelte.config.js Normal file
View File

@ -0,0 +1,8 @@
const sveltePreprocess = require("svelte-preprocess")
module.exports = {
preprocess: sveltePreprocess({
defaults: {
script: "typescript",
},
}),
}

26
tsconfig.json Normal file
View File

@ -0,0 +1,26 @@
{
"extends": "@tsconfig/svelte/tsconfig.json",
"include": ["src/**/*"],
"compilerOptions": {
"module": "esnext",
"typeRoots": ["./node_modules/@types", "./types"],
"target": "esnext",
"moduleResolution": "node",
"jsx": "preserve",
"baseUrl": "./",
/* paths - If you configure Snowpack import aliases, add them here. */
"paths": {},
/* noEmit - Snowpack builds (emits) files, not tsc. */
"noEmit": true,
/* Additional Options */
// "strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"useDefineForClassFields": true,
"allowSyntheticDefaultImports": true,
"importsNotUsedAsValues": "error"
}
}

0
types/.empty Normal file
View File

6830
yarn.lock Normal file

File diff suppressed because it is too large Load Diff