CheckOneTwo
@CheckOneTwo
Парень, который думает что он фронтэндер.

Как правильно подключать файл с миксинами в Gulp поток компиляции SASS при модульной структуре проекта?

Всем привет, недавно переработал свой стартовый шаблон. Сделал его модульным. Теперь у меня есть такое:

SASS
   helpers
     _functions.scss
     _helpers.scss
     _functions.scss
     _mixins.scss
     _variables.scss


Для того чтобы использовать все это, в файле some_page.scss я прописываю import'ы в some_page.scss:

@import '../helpers/functions';
@import '../helpers/helpers';
@import '../helpers/mixins';
@import '../helpers/variables';


Честно говоря, это убогое решение. При изменении хелперов, для того чтобы они применялись, мне требуется перезагружать Gulp чтобы файлы сосчитали импорты заново. Может есть какой-то другой способ подсунуть их в поток компиляции SASS?

Сейчас у меня 5 потоков:

gulp.watch('./dev/sass/global/*.scss',   ['sass-global'])
gulp.watch('./dev/sass/layout/*.scss',   ['sass-layout'])
gulp.watch('./dev/sass/pages/*.scss',    ['sass-pages'])
gulp.watch('./dev/sass/features/*.scss', ['sass-features'])
gulp.watch('./dev/sass/helpers/*.scss',  ['sass-helpers'])


У каждого потока свои особенности компиляции, поэтому объединить их в один не вариант.

Если говорить проще. Мне нужно избавиться от impоrt'а папки helpers в остальных .scss файлах. Папку helpers мне не нужно никуда компилировать. Нужно сделать так чтобы таск просто считывал миксины, переменные и функции.

Подскажите пожалуйста как это все сделать по-человечески!?
  • Вопрос задан
  • 1683 просмотра
Решения вопроса 2
nikolayshabalin
@nikolayshabalin
Автор профессиональных курсов в HTML Academy
Вам нужно настроить таску, чтобы она смотрела на всю папку sass

Таска
gulp.task('sass', function() {
 gulp.src('/dev/sass/**/*.scss')
  .pipe(sass())
  .pipe(gulp.dest('место куда должно компилится'))
});


Watch
gulp.watch('/dev/sass/**/*.scss', ['sass']);

Настройки, конечно же подставьте свои.
Ответ написан
Посмотрите на Bootstrap 4 (думаю в авторитетности этих парней сомневаться не приходится)

Есть n файлов вида _filename.scss
Эти файлы не компилируются сами по себе.

Есть n файлов вида filename.scss, которые компилируются в /some/path/filename.css
В этих файлах мы @import нужные нам модули.

Bootstrap предлагает собрать как полный набор стилей (bootstrap.scss), так и только сетку (bootstrap-grid.scss)

На всё это один watcher и один поток.

Оотдельный css для отдельной странице - зло. Выигрыша никакого, проблем много. Погуглите на эту тему.
Меня бы backend'еры побили бы за такое :(
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы