개발 지식/Flask와 Jinja2

Flask와 Jinja2로 개발하기 - (3) SCSS 사용하기

sisun 2025. 11. 1. 02:43

Flask를 사용한 이번 프로젝트에서는 SCSS를 사용해서 개발을 해보려고 합니다. SCSS는 정말 옛날에 남이 만들어놓은 코드를 수정할 때 한 번 사용한 적이 있긴 하지만, 그 뒤로 바로 React 개발로 넘어와 Styled-component와 같은 라이브러리를 접하면서 SCSS를 접할 기회는 더 없었던 것 같습니다. 

예전에 SCSS가 작업하기 좋다는 말은 많이 들었는데 이번에 몸소 직접 느껴보려고 합니다.

SCSS란?

설치하기에 앞서 SCSS가 뭔지 정리하고 넘어가보겠습니다 :)

SCSS는 CSS 확장 언어이자 전처리기로, 모든 버전의 CSS와 완벽하게 호환하며 변수, 중첩, 상속, 함수, 반복문 등을 지원하여 더 쉽고 효율적으로 코드를 작성할 수 있게 해줍니다.

SCSS를 접하다보면 Sass도 같이 볼 수 있는데, 두 개가 서로 다른 것은 아니고 Sass가 먼저 나온 CSS 확장 언어이고, SCSS가 기존 Sass의 불편한 점들을 개선해서 CSS 문법과 거의 동일하게 작성할 수 있도록 만들어서 CSS와의 호환성을 높이기 위해 새로운 문법을 도입한 스타일 시트로 보면 될 것 같습니다.

결국 같은 기술이기 때문에 공식 문서(링크)도 하나입니다 :)

 

설치하기

저는 Flask가 직접 SCSS를 처리하는 방식 대신에 npm으로 scss를 설치해서 Flask는 결과 CSS만 사용하도록하는 방식을 선택했습니다. 이 방식을 선택한 이유는 개발하면서 Flask가 점점 무거워질 SCSS를 처리하는 게 성능적으로 좋은 행동은 아니라고 생각했기 떄문입니다.

 

1. npm으로 sass를 설치합니다.

npm install -D sass

 

2. 그리고 app.py 파일이 위치한 곳에 static/scss/style.scss 파일을 생성해줍니다. 저는 body에 배경색 #d9d9d9를 적용하는 코드를 작성했습니다. 아직 크게 작성한 코드가 없어서 scss 문법을 사용하지는 않았지만 정상적으로 빌드가 잘 동작하는지만 살펴보겠습니다.

body {
  backgroud-color: #d9d9d9;
}

 

3. css 적용할 html의 <head>태그 안에 아래 <link> 태그 코드를 추가해줍니다.

  <head>
    ...
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" />
  </head>

 

4. sass 명령어로 scss를 컴파일 해줍니다. 그러면 static 폴더안에 css 파일이 자동으로 생성됩니다. css 파일 이름은 scss 파일 이름과 동일하게 생성됩니다. 그리고 watch모드를 통해 static/scss 폴더를 계속 감시하다가 만약에 파일 수정이 발생하면 자동으로 static/css 폴더의 css 파일을 새로 빌드해줍니다.

npx sass static/scss:static/css --watch

 

5. 최종적으로 css 파일을 적용한 페이지 결과물을 확인할 수 있습니다. 

마무리

scss문법을 사용한 코드로 구체적인 예를 들지는 않았지만, 설치와 사용 방법을 중점으로 작성해봤습니다.

간단했지만 css 문법을 그대로 사용해서 러닝커브가 거의 없는 편인 것 같습니다. 

예전에는 마냥 새로운 것들이 두려웠는데, 요즘은 뭐든 두려움없이 배우기 좋은 시대인 것 같습니다.

 

읽어주셔서 감사합니다 :)
댓글은 언제든 환영입니다 ☺️

 

참고

SCSS 설명 - https://inpa.tistory.com/entry/SCSS-%F0%9F%92%8E-SassSCSS-%EB%9E%80-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%BB%B4%ED%8C%8C%EC%9D%BC