본문으로 건너뛰기
Case Converter Online
ko

SCSS 포매터

SCSS를 붙여넣으면 중첩 규칙, 믹스인, 맵을 언제나 같은 방식으로 들여씁니다. 문법 오류는 정확한 줄과 열로 표시됩니다.

SCSS 코드를 붙여넣거나 예시를 누르세요. Ctrl과 Enter를 누르면 포맷됩니다. 모든 작업은 브라우저에서 실행됩니다.

SCSS 포매터가 하는 일

SCSS에서는 규칙을 중첩하고, 값을 $variables에 저장하고, @mixin으로 블록을 재사용하고, 설정을 맵에 담을 수 있습니다. 이런 기능 덕분에 파일은 금방 커지고, 여러 사람이 같은 스타일시트를 고치기 시작하면 들여쓰기가 흐트러집니다. 누구는 color:$brand라고 쓰고 누구는 color : $brand ;라고 쓰며, 중첩 블록의 깊이는 제각각이 됩니다.

이 SCSS 포매터는 모든 중첩 단계를 같은 방식으로 들여쓰고, 선언을 한 줄에 하나씩 놓으며, 콜론과 중괄호 주변의 띄어쓰기를 일관되게 맞춥니다. SCSS 파서를 갖춘 Prettier 3를 사용하며 모든 작업이 브라우저 안에서 이루어집니다.

사용 방법

  1. 왼쪽 상자에 SCSS를 붙여넣습니다. 붙여넣는 순간 정렬됩니다.
  2. 파일 열기를 눌러 .scss 파일을 불러오거나, 예시를 눌러 예제를 볼 수도 있습니다.
  3. 들여쓰기를 고릅니다. 공백 2칸, 공백 4칸, 탭 중에서 선택합니다.
  4. 줄 너비를 고릅니다. 긴 선택자 목록, 맵, include 인자는 이 너비를 넘으면 줄이 바뀝니다.
  5. 스타일 가이드가 작은따옴표를 선호한다면 작은따옴표를 켭니다.
  6. 포맷을 누르거나, 입력 상자에서 Ctrl+Enter를 누릅니다.
  7. 복사를 누르거나, 다운로드를 눌러 .scss 파일로 저장합니다.

처음 포맷한 뒤에는 입력하는 대로 결과가 따라옵니다. 문제가 있으면 상자 아래에 2행 3열: Unclosed block 같은 메시지가 나타나고, 입력에서 보기를 누르면 커서가 그 위치로 갑니다.

정렬 전과 후

변수, 믹스인, 중첩 규칙이 들어간 압축된 SCSS 코드입니다.

$brand:#3b82f6;@mixin card($pad:16px){padding:$pad;border-radius:8px}.nav{display:flex;gap:1rem;a{color:$brand;&:hover{text-decoration:underline}}.btn{@include card(12px)}}

공백 2칸으로 포맷한 결과입니다.

$brand: #3b82f6;
@mixin card($pad: 16px) {
  padding: $pad;
  border-radius: 8px;
}
.nav {
  display: flex;
  gap: 1rem;
  a {
    color: $brand;
    &:hover {
      text-decoration: underline;
    }
  }
  .btn {
    @include card(12px);
  }
}

중첩 단계마다 들여쓰기가 하나씩 늘어나므로 &:hover가 .nav 안의 링크에 속한다는 것을 한눈에 알 수 있습니다.

Sass 맵은 키마다 한 줄씩, 여러 줄로 펼쳐집니다.

$breakpoints: (
  small: 576px,
  medium: 768px,
  large: 992px
);

작은따옴표를 켜면 @use "sass:math";가 @use 'sass:math';로 바뀝니다. 한 줄 주석은 원래 있던 자리에 그대로 남습니다.

// Header styles
.header {
  .logo {
    width: 120px;
  }
}

오류와 한계

포매터는 파일을 출력하기 전에 먼저 파싱해야 합니다. 가장 흔한 문제는 닫는 중괄호 누락입니다. 다음 입력의 경우

.nav {
  a { color: red;

메시지는 2행 3열: Unclosed block(닫히지 않은 블록)이며, 닫히지 않은 a {를 가리킵니다.

알아 둘 점은 다음과 같습니다.

  • 이 도구는 의미가 아니라 문법을 확인합니다. 정의되지 않은 변수나 존재하지 않는 믹스인은 보고되지 않습니다. 그런 문제는 Sass 컴파일러가 찾아냅니다.
  • 속성 순서를 바꾸거나 선택자를 정렬하지 않습니다. 작성한 순서가 유지됩니다.
  • 들여쓰기 방식의 .sass 문법은 지원하지 않습니다. 먼저 SCSS로 변환하거나, 그 문법을 지원하는 에디터에서 정렬하세요.
  • 이 페이지에는 압축(Minify) 버튼이 없습니다. 브라우저는 CSS만 실행하므로 SCSS를 압축하는 것은 의미가 없습니다. Sass로 컴파일한 다음 CSS 결과물을 압축하세요.

더 깔끔한 SCSS를 위한 팁

  • 중첩은 얕게 유지하세요. 깊은 중첩은 길고 깨지기 쉬운 선택자를 만들기 때문에, 스타일 가이드에서는 보통 3단계를 한계로 둡니다.
  • 변수와 맵은 _tokens.scss 같은 별도 partial 파일에 두고 @use로 불러오세요.
  • 커밋하기 전에 포맷하세요. 그렇지 않으면 사소한 띄어쓰기 변경이 코드 리뷰에서 실제 변경 사항과 뒤섞입니다.
  • 일반 CSS 결과물을 다루고 있다면 CSS 포매터로 압축까지 할 수 있습니다.

SCSS를 정렬하는 다른 방법

  • VS Code: Prettier 확장을 설치하고 파일을 연 다음 Format Document(문서 서식)를 실행합니다. 단축키는 Windows에서 Shift+Alt+F, macOS에서 Shift+Option+F입니다.
  • 명령줄: npx prettier --write "src/**/*.scss"는 폴더 안의 모든 SCSS 파일을 정렬합니다.
  • JetBrains IDE: WebStorm 같은 IDE에는 Reformat Code 기능이 내장되어 있고, 프로젝트에 Prettier가 설치되어 있으면 Prettier를 쓸 수도 있습니다.

설치할 것이 없고 코드가 기기 밖으로 나가지 않으므로, 이슈 티켓이나 CodePen, 동료의 메시지에서 받은 코드 조각을 빠르게 정리할 때 편합니다. 이 스타일을 쓰는 마크업은 HTML 포매터에서, 스크립트는 자바스크립트 포매터에서 정렬해 보세요.

SCSS 포매터 자주 묻는 질문

SCSS와 Sass는 무엇이 다른가요?

둘 다 Sass 언어의 문법입니다. SCSS는 CSS처럼 중괄호와 세미콜론을 쓰므로 모든 CSS 파일은 올바른 SCSS이기도 합니다. .sass로 저장하는 예전의 들여쓰기 문법은 중괄호 대신 들여쓰기를 씁니다. 이 포매터는 SCSS만 읽습니다.

SCSS를 CSS로 컴파일해 주나요?

아니요. 들여쓰기, 띄어쓰기, 줄바꿈 같은 배치만 바꿉니다. 변수, 믹스인, 중첩은 그대로 남습니다. CSS가 필요하다면 Sass 컴파일러를 실행하세요. 예를 들면 npx sass input.scss output.css처럼 씁니다.

압축(Minify) 버튼이 없는 이유는 무엇인가요?

브라우저는 SCSS를 읽지 못하므로 압축된 SCSS 파일은 쓸모가 없습니다. 먼저 CSS로 컴파일한 뒤, 빌드 과정에서 또는 이 사이트의 CSS 포매터로 CSS를 압축하세요.

// 주석이 유지되나요?

네. // 한 줄 주석과 /* 블록 주석 */ 모두 제자리에 남습니다.

코드와 데이터 도구 더 보기

전체 도구 보기