scss architecture - 7-1 패턴 폴더구조

scss Architecture

디자인 시스템을 제작하면서 scss를 다루게 되었다. styled-components만 다루다가 scss를 다루게 되면서 scss 폴더 구조를 어떻게 가져가야 할 지 고민을 했는 데 scss 아키텍쳐 방식 중 제일 많이 사용되고 효율적인 구조가 7-1 pattern 이었다.

사실 어떤 것이 제일 좋다! 라는 정답은 없기에 이게 최고다 할 수는 없지만 유명한 것에는 이유가 있을 테니 써보고 후에 나의 방식으로 풀어보는 게 좋은 것 같다 생각한다.

7-1 pattern

scss 가이드라인에서 제공하는 7-1 패턴은 아래의 구조를 가지고 있다.

scss/
 ├─ abstracts/
 │   ├─ _variables.scss
 │   ├─ _functions.scss
 │   ├─ _mixins.scss
 │   ...
 ├─ base/
 │   ├─ _reset.scss
 │   ...
 ├─ components/
 │   ├─ _button.scss
 │   ├─ _select.scss
 │   ...
 ├─ layout/
 │   ├─ _header.scss
 │   ├─ _grid.scss
 │   ├─ _footer.scss
 │   ...
 ├─ pages/
 │   ├─ _home.scss
 │   ├─ _contact.scss
 │   ...
 ├─ themes/
 │   ├─ _theme.scss
 │   ├─ _admin.scss
 │   ...
 ├─ vendors/
 │   ├─ _bootstrap.scss
 │   ├─ _jquery.scss
 │   ...
 └─ main.scss

구조별 설명

또 아래 폴더 순서로 import 해야 한다고 한다.

  1. abstracts/
  2. vendors/
  3. base/
  4. layout/
  5. components/
  6. pages/
  7. themes/

ex.

 // main.scss 
 
 @import 'abstracts/_variables.scss'
 @import 'abstracts/_mixins.scss'
 @import 'abstracts/_functions.scss'
 
 @import 'base/_reset.scss'
 
 @import 'components/_button.scss'
 @import 'components/_select.scss'
 
 @import 'themes/_themes.scss'
 ...
 

7-1패턴이라고 해서 7가지를 모두 만들어 사용할 필요는 없고 위 폴더구조를 기반으로 프로젝트에 필요한 폴더만 만들어서 관리하면 된다.

참고

scss 가이드라인 - architecture

Discussion and feedback