Next.js Sass 가이드 정리
1. Sass 개요
Next.js는 Sass(.scss, .sass)를 기본 지원합니다. Sass 패키지 설치 후 바로 사용할 수 있습니다.
.scss: SCSS 문법(일반 CSS의 상위 호환).sass: Indented Syntax(들여쓰기 기반 Sass 문법)- 컴포넌트 단위 스타일은 CSS Modules로:
.module.scss/.module.sass
2. Step 1: Sass 설치
npm install --save-dev sass
3. Step 2: 파일 확장자와 CSS Modules 사용
- 전역 스타일:
*.scss/*.sass - 컴포넌트 단위(권장):
*.module.scss/*.module.sass
예시(개념):
/* app/components/Button.module.scss */
.button {
padding: 12px 16px;
}
// app/components/Button.tsx
import styles from './Button.module.scss'
export function Button() {
return <button className={styles.button}>Click</button>
}
4. Step 3: Sass 옵션 커스터마이징 (next.config)
Sass 로더 옵션을 조정하려면 next.config에서 sassOptions를 사용합니다.
4.1 공통 Sass 코드 주입 (additionalData)
예: 모든 파일에 변수/믹스인 등을 자동으로 주입
// next.config.ts
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
sassOptions: {
additionalData: `$var: red;`,
},
}
export default nextConfig
4.2 Sass 구현체 선택 (implementation)
기본은 sass 패키지를 사용합니다. 다른 구현체를 쓰려면 implementation을 지정합니다.
// next.config.ts
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
sassOptions: {
implementation: 'sass-embedded',
},
}
export default nextConfig
5. Step 4: Sass Variables를 JS/TS로 내보내기
Next.js는 CSS Module 파일에서 Sass 변수를 export할 수 있습니다.
/* app/variables.module.scss */
$primary-color: #64ff00;
:export {
primaryColor: $primary-color;
}
// app/page.tsx
import variables from './variables.module.scss'
export default function Page() {
return <h1 style={{ color: variables.primaryColor }}>Hello, Next.js!</h1>
}
6. 정리 및 팁
- CSS Modules(
.module.scss)를 사용하면 클래스 이름 충돌을 방지할 수 있습니다. sassOptions.additionalData를 활용하면 전역 변수나 믹스인을 모든 파일에 자동으로 주입할 수 있습니다.- Sass 변수는
:export구문을 통해 JavaScript/TypeScript에서 사용할 수 있어 동적 스타일링이 가능합니다. - 성능 최적화를 위해 컴포넌트 단위 스타일을 권장합니다.