Post

Svelte 프로젝트에 SCSS 및 prependData 적용하기

♧ Svelte 프로젝트에 SCSS 및 prependData 적용하기

1. svelte preprocess 설치

1
2
3
npm i -D sass

npm i -D svelte-preprocess

svelte.config.js 파일에서, 아래와 같이 -는 주석처리, +는 추가 하면된다.

1
2
3
4
5
6
7
8
9
10
- //import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
+ import { sveltePreprocess } from 'svelte-preprocess';

- // preprocess: vitePreprocess(),

+ preprocess: sveltePreprocess({
+     scss: {
+     },
+ }),

아래는 적용 예시 파일: svelte.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import adapter from "@sveltejs/adapter-auto";
//import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
import { sveltePreprocess } from "svelte-preprocess";

/** @type {import('@sveltejs/kit').Config} */
const config = {
  // 	// Consult https://kit.svelte.dev/docs/integrations#preprocessors
  // 	// for more information about preprocessors
  // 	preprocess: vitePreprocess(),

  // svelte-preprocess를 사용하여 SCSS를 처리할 수 있도록 설정
  preprocess: sveltePreprocess({
    scss: {
      // SCSS 파일에서 사용할 전역 변수를 정의하거나 추가적으로 설정할 수 있습니다.
      // prependData: `@import 'src/styles/variables.scss';` // 예시로 변수를 사용할 경우
    }
    // 기타 필요한 설정 추가
  }),

  kit: {
    // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
    // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
    // See https://kit.svelte.dev/docs/adapters for more information about adapters.
    adapter: adapter()
  }
};

export default config;


2. scss에 prependData 적용하기

2-1. scss에 prependData 적용하기 (사용 전)

파일: ‘src/styles/variables.scss’ 아래와 같이 작성

1
$color: blue;

파일: Button.svelte
@use “../styles/variables.scss”;를 각 파일의 style에 적용해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<button><slot>Slot Text</slot></button>

<style lang="scss">
  button {
    @use "../styles/variables.scss";
    border: none;
    background-color: blue;
    color: white;
    padding: 15px 20px;
    font-weight: bold;
    border-radius: 5px;
    cursor: pointer;

    &:hover {
      background-color: variables.$color;
    }
  }
</style>

2-2. scss에 prependData 적용하기 (사용 후)

파일: svelte.config.js

1
2
3
4
5
6
7
8
  // svelte-preprocess를 사용하여 SCSS를 처리할 수 있도록 설정
  preprocess: sveltePreprocess({
    scss: {
      // SCSS 파일에서 사용할 전역 변수를 정의하거나 추가적으로 설정할 수 있습니다.
      prependData: `@import 'src/styles/variables.scss';` // 예시로 변수를 사용할 경우
    }
    // 기타 필요한 설정 추가
  }),

파일: ‘src/styles/variables.scss’ 아래와 같이 작성

1
$color: blue;

파일: Button.svelte
@use “../styles/variables.scss”; 를 삭제해도 전역으로 적용된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<button><slot>Slot Text</slot></button>

<style lang="scss">
  button {
    border: none;
    background-color: blue;
    color: white;
    padding: 15px 20px;
    font-weight: bold;
    border-radius: 5px;
    cursor: pointer;

    &:hover {
      background-color: variables.$color;
    }
  }
</style>
This post is licensed under CC BY 4.0 by the author.