Структура папок типового SASS проекта#
project-name/
│
├── src/
│ ├── scss/
│ │ ├── abstracts/
│ │ │ ├── _variables.scss # Переменные (цвета, шрифты, размеры)
│ │ │ ├── _mixins.scss # Миксины
│ │ │ ├── _functions.scss # Функции
│ │ │ └── _placeholders.scss # Плейсхолдеры для @extend
│ │ │
│ │ ├── base/
│ │ │ ├── _reset.scss # CSS Reset или Normalize
│ │ │ ├── _typography.scss # Базовая типографика
│ │ │ ├── _base.scss # Базовые стили (html, body)
│ │ │ └── _utilities.scss # Утилитарные классы
│ │ │
│ │ ├── components/
│ │ │ ├── _buttons.scss # Кнопки
│ │ │ ├── _forms.scss # Формы
│ │ │ ├── _cards.scss # Карточки
│ │ │ ├── _modal.scss # Модальные окна
│ │ │ ├── _navigation.scss # Навигация
│ │ │ └── _slider.scss # Слайдеры
│ │ │
│ │ ├── layout/
│ │ │ ├── _header.scss # Шапка сайта
│ │ │ ├── _footer.scss # Подвал сайта
│ │ │ ├── _sidebar.scss # Боковая панель
│ │ │ ├── _grid.scss # Сеточная система
│ │ │ └── _container.scss # Контейнеры
│ │ │
│ │ ├── pages/
│ │ │ ├── _home.scss # Стили главной страницы
│ │ │ ├── _about.scss # Стили страницы "О нас"
│ │ │ ├── _contact.scss # Стили страницы контактов
│ │ │ └── _404.scss # Стили страницы ошибки 404
│ │ │
│ │ ├── themes/
│ │ │ ├── _dark.scss # Темная тема
│ │ │ └── _light.scss # Светлая тема
│ │ │
│ │ ├── vendors/
│ │ │ ├── _bootstrap.scss # Переопределение Bootstrap
│ │ │ ├── _jquery-ui.scss # Стили jQuery UI
│ │ │ └── _normalize.scss # Normalize.css
│ │ │
│ │ └── main.scss # Главный файл, импортирующий все остальные
│ │
│ ├── css/ # Скомпилированные CSS файлы
│ │ ├── main.css
│ │ └── main.css.map
│ │
│ ├── js/ # JavaScript файлы
│ │ ├── main.js
│ │ └── modules/
│ │
│ ├── images/ # Изображения
│ │ ├── icons/
│ │ ├── photos/
│ │ └── backgrounds/
│ │
│ ├── fonts/ # Шрифты
│ │ ├── font-name.woff2
│ │ └── font-name.woff
│ │
│ └── index.html # HTML файлы
│
├── dist/ # Готовые для продакшена файлы
│ ├── css/
│ ├── js/
│ ├── images/
│ └── fonts/
│
├── node_modules/ # Зависимости npm
├── package.json # Конфигурация npm
├── gulpfile.js # Конфигурация Gulp (если используется)
├── webpack.config.js # Конфигурация Webpack (если используется)
└── README.md # Документация проекта
Основные принципы организации:#
1. abstracts/ - Вспомогательные инструменты#
Не генерируют CSS код сами по себе
Содержат переменные, миксины, функции
2. base/ - Базовые стили#
Общие стили для всего проекта
Сброс стилей, типографика, базовые элементы
3. components/ - Переиспользуемые компоненты#
Небольшие, изолированные части интерфейса
Кнопки, формы, карточки
4. layout/ - Макетные блоки#
Крупные структурные элементы
Шапка, подвал, сетка
5. pages/ - Специфичные стили страниц#
Стили, уникальные для конкретных страниц
6. themes/ - Темы оформления#
Альтернативные цветовые схемы
7. vendors/ - Сторонние библиотеки#
Переопределения внешних CSS библиотек
Пример главного файла main.scss:#
// 1. Abstracts
@import 'abstracts/variables';
@import 'abstracts/functions';
@import 'abstracts/mixins';
@import 'abstracts/placeholders';
// 2. Base
@import 'base/reset';
@import 'base/typography';
@import 'base/base';
// 3. Layout
@import 'layout/header';
@import 'layout/footer';
@import 'layout/sidebar';
@import 'layout/grid';
// 4. Components
@import 'components/buttons';
@import 'components/forms';
@import 'components/cards';
// 5. Pages
@import 'pages/home';
@import 'pages/about';
// 6. Themes
@import 'themes/dark';
Эта структура основана на методологии 7-1 Pattern и обеспечивает удобную организацию кода, легкость поддержки и масштабируемость проекта.