SvelteKit와 함께 사용하기
SvelteKit 프로젝트에 FSD(Feature-Sliced Design)를 적용할 때는 다음 차이를 유의하세요:
- SvelteKit은 routing 파일을
src/routes
에 두지만, FSD는 routing을app
레이어에 포함합니다. - SvelteKit은 라우트 외 파일을
src/lib
에 두도록 권장합니다.
구성 설정
svelte.config.ts
에서 기본 경로를 변경해 app
layer로 라우팅과 템플릿을 이동하고, src/lib
를 설정합니다.
svelte.config.ts
import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config}*/
const config = {
preprocess: [vitePreprocess()],
kit: {
adapter: adapter(),
files: {
routes: 'src/app/routes', // routing을 app layer로 이동
lib: 'src',
appTemplate: 'src/app/index.html', // application entry point를 app layer로 이동
assets: 'public'
},
alias: {
'@/*': 'src/*' // src directory alias 설정
}
}
};
export default config;
File Routing을 src/app
으로 이동
설정 변경 후 폴더 구조는 다음과 같습니다:
├── src
│ ├── app
│ │ ├── index.html
│ │ ├── routes
│ ├── pages # FSD pages Layer
이제 app/routes
폴더에 라우트 파일을 두고, pages
layer의 컴포넌트를 연결할 수 있습니다.
예시) Home 페이지 추가 예시
- pages layer에 새 page slice 생성
app/routes
에 route 파일 추가- page component를 route와 연결
CLI 도구로 page slice를 생성합니다:
fsd pages home
pages/home/ui/home-page.svelte
를 생성하고 public API로 노출하세요:
src/pages/home/index.ts
export { default as HomePage } from './ui/home-page';
app/routes
에 route 파일을 추가합니다:
├── src
│ ├── app
│ │ ├── routes
│ │ │ ├── +page.svelte
│ │ ├── index.html
│ ├── pages
│ │ ├── home
│ │ │ ├── ui
│ │ │ │ ├── home-page.svelte
│ │ │ ├── index.ts
+page.svelte
에서 page component를 import 후 렌더링합니다:
src/app/routes/+page.svelte
<script>
import { HomePage } from '@/pages/home';
</script>
<HomePage/>