SvelteKit νλ‘μ νΈμ Tailwind CSSλ₯Ό μ€μ νλ κ°μ₯ κΉλνκ³ κ³΅μμ μΈ λ°©λ²μ μκ°ν©λλ€. μ΅μ λ¬Έμλ₯Ό κΈ°μ€μΌλ‘ μ 리νμΌλ©°, μ€μ μ½λμ μ€μ μμλ₯Ό ν¬ν¨νμ΅λλ€.
β 01. SvelteKit νλ‘μ νΈ μμ±
SvelteKit νλ‘μ νΈκ° μμ§ μλ€λ©΄, μλ λͺ
λ Ήμ΄λ‘ μλ‘ λ§λ€μ΄ μ£ΌμΈμ.
곡μ λ¬Έμμμλ μλ΄νλ κ°μ₯ νμ€μ μΈ λ°©λ²μ
λλ€:
npx sv create my-project
cd my-project
β 02. Tailwind CSS μ€μΉ
Tailwind CSSμ κ΄λ ¨λ νλ¬κ·ΈμΈμ μ€μΉν©λλ€.
npm install tailwindcss @tailwindcss/vite
β 03. Vite μ€μ νμΌ μμ
vite.config.ts
λλ vite.config.js
μ Tailwind νλ¬κ·ΈμΈμ μΆκ°ν©λλ€:
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import tailwindcss from '@tailwindcss/vite';
export default defineConfig({
plugins: [
tailwindcss(),
sveltekit(),
],
});
β 04. Tailwind CSS import νμΌ μμ±
src/app.css
νμΌμ λ§λ€κ³ λ€μμ μΆκ°νμΈμ:
@import "tailwindcss";
μ΄ νμΌμ Tailwindμ κΈ°λ³Έ μ€νμΌ, μ»΄ν¬λνΈ, μ νΈλ¦¬ν° ν΄λμ€λ₯Ό ν¬ν¨νλ ν΅μ¬ νμΌμ λλ€.
β 05. CSSλ₯Ό SvelteKit λ μ΄μμμ import
SvelteKitμ κΈ°λ³Έμ μΌλ‘ src/routes/+layout.svelte
μμ μ μ CSSλ₯Ό λ‘λν©λλ€.
νμΌμ μμ±νκ³ μλμ²λΌ μμ±νμΈμ:
<script>
import "../app.css";
</script>
<slot />
+layout.svelte
λ λͺ¨λ νμ΄μ§μ κ³΅ν΅ μ μ©λλ μ μ UI λ° CSSλ₯Ό λ΄λΉν©λλ€.
β 06. κ°λ° μλ² μ€ν
μ€μ μ΄ λλ¬λ€λ©΄, κ°λ° μλ²λ₯Ό μ€νν΄μ Tailwindκ° μ μλνλμ§ νμΈν©λλ€:
npm run dev
λΈλΌμ°μ μμ http://localhost:5173
μ μ΄μ΄ νμΈνμΈμ.
β 07. Tailwind CSS μ¬μ© μμ
μ΄μ Tailwind μ νΈλ¦¬ν° ν΄λμ€λ₯Ό λ§μκ» μ¬μ©ν μ μμ΅λλ€!
μ: +page.svelte
<h1 class="text-3xl font-bold underline">
Hello world!
</h1>
<style lang="postcss">
@reference "tailwindcss";
:global(html) {
background-color: theme(--color-gray-100);
}
</style>
class="text-3xl font-bold"
: Tailwindμ ν μ€νΈ ν¬κΈ°μ κ΅΅κΈ° μ€μ <style lang="postcss">
: Tailwindμμ μ€νμΌμ μ²λ¦¬ν μ μλλ‘ PostCSS μ¬μ©@reference
μtheme()
ν¨μ: Tailwind λ³μ μ¬μ©
π§ λ§λ¬΄λ¦¬ μ 리
νλͺ© | μ€λͺ |
---|---|
μ€μ λ°©μ | 곡μ λ¬Έμ κΈ°λ°μ Vite νλ¬κ·ΈμΈ ν΅ν© λ°©μ |
μ€νμΌ μ μ© | HTML ν΄λμ€ κΈ°λ° μ νΈλ¦¬ν° λ°©μ |
νμ₯μ± | PostCSS, JIT λͺ¨λ, ν λ§ μ»€μ€ν°λ§μ΄μ§ κ°λ₯ |
κΈ°ν | λͺ¨λ μ€μ μ 컀μ€ν°λ§μ΄μ§ κ°λ₯, μ€μ νμΌλ‘ μ‘°μ κ°λ₯ |
π λ€μ κΈ μκ³
- λ€ν¬ λͺ¨λ λ° μ¬μ©μ ν λ§ μ μ©νκΈ°
- daisyUI, Flowbite λ± UI λΌμ΄λΈλ¬λ¦¬ μΆκ°νκΈ°
- SvelteKit + Tailwindλ‘ ν¬νΈν΄λ¦¬μ€ μ¬μ΄νΈ λ§λ€κΈ°
μν νλ‘μ νΈ zip νμΌμ λ§λ€μμ΅λλ€. μλ λ§ν¬μμ λ€μ΄λ‘λνμ€ μ μμ΄μ:
μ΄ νλ‘μ νΈμλ λ€μμ΄ ν¬ν¨λμ΄ μμ΅λλ€:
vite.config.js
μμ@tailwindcss/vite
νλ¬κ·ΈμΈ μ€μ src/app.css
μ Tailwind import+layout.svelte
μμ CSS μ μ import+page.svelte
μ Tailwind μ νΈλ¦¬ν° ν΄λμ€ λ° PostCSS μμ ν¬ν¨
β‘ Viteλ?
Viteλ μ°¨μΈλ νλ‘ νΈμλ κ°λ° λΉλ λꡬμ
λλ€.
Vue.jsμ μ°½μμ Evan Youκ° λ§λ€μμΌλ©°, νμ¬λ React, Svelte, Preact λ± λ€μν νλ μμν¬μμ νλκ² μ¬μ©λκ³ μμ΄μ.
π‘ ν μ€ μμ½
Viteλ λΉ λ₯Έ κ°λ° μλ²μ μ΅μ νλ νλ‘λμ λΉλλ₯Ό μ 곡νλ λͺ¨λ λΉλ λꡬμ λλ€.
π§ Viteμ μ£Όμ νΉμ§
νΉμ§ | μ€λͺ |
---|---|
β‘ λΉ λ₯Έ κ°λ° μλ² | λͺ¨λ λ¨μλ‘ μμ²μ μ²λ¦¬ν΄μ μ¦μ λ°μλ¨ (Hot Module Replacement) |
π§± λͺ¨λ κΈ°λ° | ES λͺ¨λ(ESM)μ μ¬μ©νμ¬ λΈλΌμ°μ κ° μ§μ λͺ¨λ λΆλ¬μ΄ |
π οΈ λΉλ λꡬ ν΅ν© | Rollupμ λ΄λΆμ μΌλ‘ μ¬μ©ν΄μ μ΅μ νλ νλ‘λμ λΉλ μ 곡 |
π νλ¬κ·ΈμΈ μμ€ν | λ€μν Vite νλ¬κ·ΈμΈκ³Ό ν΅ν© κ°λ₯ (μ: Tailwind, React, Svelte λ±) |
π¦ κ²½λ μ€μ | vite.config.js λλ vite.config.ts λ‘ κ°λ¨νκ² μ€μ κ°λ₯ |
π§ͺ Viteμ SvelteKitμ κ΄κ³
- SvelteKitλ λ΄λΆμ μΌλ‘ Viteλ₯Ό λΉλ λκ΅¬λ‘ μ¬μ©ν©λλ€.
- μ°λ¦¬κ° μμ±ν
vite.config.js
λ SvelteKitμ λμ λ°©μμ΄λ νλ¬κ·ΈμΈμ 컀μ€ν°λ§μ΄μ§ν λ μ°μ λλ€.
μ:
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
export default defineConfig({
plugins: [
tailwindcss(), // Tailwind νλ¬κ·ΈμΈ λ±λ‘
sveltekit(), // SvelteKit μ¬μ© μ μΈ
],
});
π§© Viteλ‘ κ°λ₯ν μΌ
μμ | λͺ λ Ήμ΄ |
---|---|
κ°λ° μλ² μ€ν | npm run dev |
λΉλ | npm run build |
λΉλ κ²°κ³Ό 미리 보기 | npm run preview |
νλ¬κ·ΈμΈ μΆκ° | vite-plugin-xxx ννλ‘ μ€μΉ κ°λ₯ |
π vite.config.js μμΉμ μν
- νλ‘μ νΈ λ£¨νΈ λλ ν 리μ μ‘΄μ¬ (
vite.config.js
λλvite.config.ts
) - μ£Όμ μν :
- νλ¬κ·ΈμΈ μ€μ
- λ³μΉ(alias) μ μ
- λΉλ κ²½λ‘ μ€μ
- κ°λ° μλ² μ΅μ μ€μ
β λ§λ¬΄λ¦¬ μ 리
νλͺ© | μ€λͺ |
---|---|
Vite | λΉ λ₯Έ κ°λ° μλ² + Rollup κΈ°λ° λΉλ λꡬ |
SvelteKit | λ΄λΆμ μΌλ‘ Viteλ₯Ό μ¬μ©ν¨ |
Tailwind ν΅ν© | Vite νλ¬κ·ΈμΈμ ν΅ν΄ μ½κ² μ€μ κ°λ₯ |
μ€μ νμΌ | vite.config.js μμ νλ¬κ·ΈμΈ λ° μ€μ μ‘°μ |