Skip to content

Commit 65e228a

Browse files
committed
update README.md
1 parent 472291a commit 65e228a

File tree

1 file changed

+196
-2
lines changed

1 file changed

+196
-2
lines changed

README.md

Lines changed: 196 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,196 @@
1-
# svelte
2-
Guide for Svelte + TailwindCSS + Vite + GitHub Pages
1+
<!-- <img|title here> -->
2+
<!-- shield.io, 'project built with' -->
3+
4+
"[Svelte](https://svelte.dev/) is a tool for building web applications. Like other user interface frameworks, it allows you to build your app _declaratively_ out of components that combine markup, styles, and behaviours."
5+
6+
"[SvelteKit](https://kit.svelte.dev/) is a framework for rapidly developing robust, performant web applications using Svelte. If you're coming from React, SvelteKit is similar to Next. If you're coming from Vue, SvelteKit is similar to Nuxt."
7+
8+
This guide provides a first-hand experience on building a Svelte project using [SvelteKit](https://kit.svelte.dev/docs/introduction) + [Tailwind CSS](https://tailwindcss.com/docs/guides/sveltekit) and deploying it on [GitHub Pages](https://pages.github.com/).
9+
10+
## 🛠️ Installation
11+
12+
**1. Create your project.**
13+
14+
```bash
15+
# terminal
16+
npm create svelte@latest project_name
17+
cd project_name
18+
```
19+
20+
**2. Install Tailwind CSS.**
21+
22+
```bash
23+
# terminal
24+
npm install -D tailwindcss postcss autoprefixer
25+
npx tailwindcss init -p
26+
```
27+
28+
**3. Enable use of PostCSS in \<style> blocks.** <small>[reference here](https://tailwindcss.com/docs/guides/sveltekit)</small>
29+
30+
```js
31+
// svelte.config.js
32+
import adapter from '@sveltejs/adapter-auto';
33+
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
34+
35+
/** @type {import('@sveltejs/kit').Config} */
36+
const config = {
37+
kit: {
38+
adapter: adapter(),
39+
},
40+
preprocess: vitePreprocess(),
41+
};
42+
43+
export default config;
44+
```
45+
46+
**4. Configure your template paths.**
47+
48+
```js
49+
// tailwind.config.js
50+
/** @type {import('tailwindcss').Config} */
51+
export default {
52+
content: ['./src/**/*.{html,js,svelte,ts}'],
53+
theme: {
54+
extend: {},
55+
},
56+
plugins: [],
57+
};
58+
```
59+
60+
**5. Add the Tailwind directives to your CSS.** `./src/app.css`
61+
62+
```css
63+
/* app.css */
64+
@tailwind base;
65+
@tailwind components;
66+
@tailwind utilities;
67+
```
68+
69+
**6. Import the CSS file.** `./src/routes/+layout.svelte`
70+
71+
```html
72+
<!-- +layout.svelte -->
73+
<script>
74+
import '../app.css';
75+
</script>
76+
77+
<slot />
78+
```
79+
80+
**7. Start your build process.**
81+
82+
```bash
83+
npm run dev
84+
```
85+
86+
**8. Start coding.**
87+
88+
```html
89+
<h1 class="text-3xl font-bold underline">Hello world!</h1>
90+
91+
<style lang="postcss">
92+
:global(html) {
93+
background-color: theme(colors.gray.100);
94+
}
95+
</style>
96+
```
97+
98+
## 🗂️ File Structure
99+
100+
Typical file structure.
101+
102+
```
103+
my-project/
104+
├─ src/
105+
│ ├─ lib/
106+
│ │ ├─ server/
107+
│ │ │ └─ [your server-only lib files]
108+
│ │ └─ [your lib files]
109+
│ ├─ params/
110+
│ │ └── [your param matchers]
111+
│ ├─ routes/
112+
│ │ ├─ +layout.svelte
113+
│ │ ├─ +page.svelte
114+
│ │ └─ [your routes]
115+
│ ├─ app.html
116+
│ ├─ app.css
117+
│ ├─ error.html
118+
│ ├─ hooks.client.js
119+
│ ├─ hooks.server.js
120+
│ └─ service-worker.js
121+
├─ static/
122+
│ └─ [your static assets]
123+
├─ tests/
124+
│ └─ [your tests]
125+
├─ package.json
126+
├─ svelte.config.js
127+
├─ tsconfig.json
128+
└─ vite.config.js
129+
```
130+
131+
## 🛫 How to deploy to GitHub Pages
132+
133+
Deploying to github pages is totally up to you, be it through **[GitHub Actions](https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions)**, or via **[gh-pages](https://www.npmjs.com/package/gh-pages)** without jekyll, or manually.
134+
135+
> [!NOTE]
136+
>
137+
> - Take note of the specific configurations for your project before deploying it, otherwise, it won't work properly on production. Refer to the documentations for [Svelte](https://svelte.dev/docs/introduction) or [SvelteKit](https://kit.svelte.dev/docs/introduction).
138+
> - Also take note that [GitHub Pages](https://pages.github.com/) have limitations, it's free, yes, but it has a limit.
139+
140+
### ❗ via package without the use of Jekyll SSG ❗
141+
142+
**1. Install `gh-pages` package.**
143+
144+
```bash
145+
npm install gh-pages --save-dev
146+
```
147+
148+
**2. Add `.nojekyll` file to your `static/` directory.**
149+
150+
> [!IMPORTANT]
151+
> It is important that the **.nojekyll file** is present in the _gh-pages_ branch for the project deployment to work properly.
152+
153+
**3. Add `deploy` to your scripts.**
154+
155+
```json
156+
{
157+
"scripts": {
158+
"deploy": "npm run build && gh-pages -d build -t true"
159+
}
160+
}
161+
```
162+
163+
`-t true` flag addition is based on this [discussion](https://github.com/tschaub/gh-pages/issues/315) regarding the the dotfiles (.nojekyll) not being pushed in the repo for deployment.
164+
165+
**4. Create and configure a new branch for `gh-pages`.**
166+
I like to do this manually. If there is some automated way, feel free to let me know by any means.
167+
168+
```bash
169+
git checkout --orphan gh-pages
170+
git reset --hard
171+
git commit --allow-empty -m 'commit_message'
172+
git push origin gh-pages
173+
```
174+
175+
**5. Publish the production build.**
176+
177+
```bash
178+
npm run deploy
179+
```
180+
181+
### ❗ via manually configuring github pages settings ❗
182+
183+
**1. Create your project.**
184+
Start coding your project, either use a framework like React, Vue, or not.
185+
186+
**2. Publish production build to GitHub.**
187+
Push your _production build_ to your github repo. After that, check if your `index.html` file is uploaded, since it is one of the core files needed for your website to work.
188+
189+
**3. Configure your GitHub Pages on repo Settings.**
190+
Navigate to `Settings > Pages > Build and deployment`. Make sure the _Source_ says 'Deploy from a branch', and then configure the _Branch_ settings and change it to your branch with the files.
191+
192+
---
193+
194+
🌎 [kerbethecoder](https://kerbethecoder.com/)
195+
📫 krby.cnts@gmail.com
196+
📌 July 26, 2024

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy