Настройка проекта SASS: микшины, зависящие от других миксинов

#css #responsive-design #sass

#css #адаптивный дизайн #sass

Вопрос:

Я упорядочиваю свои файлы sass (scss) так, как описано здесь

 stylesheets/
|
|-- modules/              # Common modules
|   |-- _all.scss         # Include to get all modules
|   |-- _utility.scss     # Module name
|   |-- _colors.scss      # Etc...
|   ...
|
|-- partials/             # Partials
|   |-- _base.sass        # imports for all mixins   global project variables
|   |-- _buttons.scss     # buttons
|   |-- _figures.scss     # figures
|   |-- _grids.scss       # grids
|   |-- _typography.scss  # typography
|   |-- _reset.scss       # reset
|   ...
|
|-- vendor/               # CSS or Sass from other projects
|   |-- _colorpicker.scss
|   |-- _jquery.ui.core.scss
|   ...
|
`-- main.scss            # primary Sass file
 

Я понимаю цель разграничения частичных элементов и модулей: частичные элементы выводят css, Тогда как модули определяют микшины, переменные и т. Д., Которые Легче использовать повторно.

Мой вопрос: что, если я хочу написать модуль, который использует микшины из другого модуля? Например, у меня есть модуль, который определяет микширование для медиа-запросов. У меня есть еще один модуль, который определяет микширование для быстрого масштабирования опечаток (настройка высоты строки, размера шрифта и т. Д.). Я хочу, чтобы последний использовал мой адаптивный микширование, но я не хочу копировать / вставлять первый модуль во второй. Должен ли я просто @импортировать первый во второй? Какова наилучшая практика для этого?

Ответ №1:

Какой бы файл ни был зависимым, вы сначала импортируете его.

Мне нравится сохранять свою структуру довольно плоской и просто импортировать все в один основной файл.scss.

 @import "variables";
@import "base-classes";
@import "mixins";

@import "fonts";
@import "typography";

@import "elements";

@import "layouts/spree_application";

@import "orders";

@import "products/show";

@import "shared/breadcrumbs";
@import "shared/feed";
@import "shared/footer";
@import "shared/header";
@import "shared/subscribe";
@import "shared/taxonomies";

// Checkout pages
@import "checkout/edit";
@import "checkout/summary";

@import "checkout/delivery";
@import "checkout/payment";
@import "checkout/confirm";

// Pages
@import "lookbooks";

@import "news/index";
@import "news/show";

@import "stockists";
@import "surfclub";
@import "about";
@import "returnsexchanges";
 

Комментарии:

1. Я понимаю, что модули предназначены для повторного использования. По этой причине я ищу способ обработки зависимости, чтобы позже ничего не сломалось, если я захочу использовать один модуль, но не другой. Имеет ли это смысл? Ваш ответ не решает мою проблему. Это то, что я делаю сейчас, и это прекрасно подходит в рамках одного проекта. Но я ищу долгосрочное решение, которое максимально избегает сцепления.