Фонд 6 не генерирует никаких стилей
У меня есть новый проект для тестирования Foundation 6 с помощью Gulp и Sass, но он вообще не компилируется. Есть еще одно сообщение, близкое к этой теме, но я лично считаю, что принятый ответ не является правильным решением - так как он включает в себя все компоненты и на самом деле является противоположностью тому, что предлагает Зурб (см. Эту проблему: https://github.com/zurb/foundation-sites/issues/7537). В любом случае...
Я установил Foundation 6.1.1 из беседки и добавил путь к моей функции gulp-sass
в gulpfile.js
следующим образом:
// Compile Our Sass
gulp.task('sass', function() {
return gulp.src('scss/theme.scss')
.pipe(sass({ includePaths : ['bower_components/foundation-sites/scss'], outputStyle: 'expanded'}).on('error', sass.logError))
.pipe(gulp.dest('css/'))
});
Мой theme.scss
выглядит следующим образом:
//vendor file
@import '../bower_components/foundation-sites/scss/settings/settings';
@import '../bower_components/foundation-sites/scss/foundation';
body{
background: red;
}
При компиляции моего scss я не получаю никаких ошибок, но вывод theme.css
выглядит следующим образом:
/**
* Foundation for Sites by ZURB
* Version 6.1.1
* foundation.zurb.com
* Licensed under MIT Open Source
*/
body {
background: red;
}
Итак, кажется, что он ударяет по файлу с момента вывода комментария, но не компилирует любой из SAS-импорта в foundation.scss
.
Ответы
Ответ 1
Это происходит потому, что в Foundation 6 @import foundation
импортируются только микшионы Foundation для использования в вашем SCSS. Он настраивается таким образом, чтобы вы могли использовать компонентные микшионы Foundation, а не надувать свой CSS, добавляя также классы CSS для этого компонента.
Чтобы импортировать все из классов CSS CSS, вы можете настроить свой основной файл app.scss
(theme.scss
в вашем случае), подобный этому:
@import 'settings';
@import 'foundation';
@import 'motion-ui';
@include foundation-everything;
@include motion-ui-transitions;
@include motion-ui-animations;
Чтобы импортировать только отдельные классы CSS для необходимых компонентов, настройте файл app.scss
(theme.scss
в вашем случае), как показано ниже, и закомментируйте компоненты, которые вы не используете.
@import 'settings';
@import 'foundation';
@import 'motion-ui';
@include foundation-global-styles; // Always include the global-styles
@include foundation-grid;
@include foundation-typography;
@include foundation-button;
@include foundation-forms;
@include foundation-visibility-classes;
@include foundation-float-classes;
@include foundation-accordion;
@include foundation-accordion-menu;
@include foundation-badge;
@include foundation-breadcrumbs;
@include foundation-button-group;
@include foundation-callout;
@include foundation-close-button;
@include foundation-drilldown-menu;
@include foundation-dropdown;
@include foundation-dropdown-menu;
@include foundation-flex-video;
@include foundation-label;
@include foundation-media-object;
@include foundation-menu;
@include foundation-off-canvas;
@include foundation-orbit;
@include foundation-pagination;
@include foundation-progress-bar;
@include foundation-slider;
@include foundation-sticky;
@include foundation-reveal;
@include foundation-switch;
@include foundation-table;
@include foundation-tabs;
@include foundation-thumbnail;
@include foundation-title-bar;
@include foundation-tooltip;
@include foundation-top-bar;
@include motion-ui-transitions;
@include motion-ui-animations;
Вы также захотите скопировать файл _settings.scss
из bower_components/foundation-sites/scss/settings/
и поместить его в каталог проекта scss
.
Наконец, убедитесь, что вы включили эти два пути в задачу sass в gulpfile.js
:
-
bower_components/foundation-sites/scss
-
bower_components/motion-ui/src/
Ответ 2
Для настоящих новичков Zurb, таких как я, вот ответ, который я искал (и просто потратил впустую часы, чтобы найти).
Когда вы устанавливаете Foundation 6, вы получаете файл SCSS, начинающийся примерно так:
// Dependencies
@import '../_vendor/normalize-scss/sass/normalize';
@import '../_vendor/sassy-lists/stylesheets/helpers/missing-dependencies';
@import '../_vendor/sassy-lists/stylesheets/helpers/true';
@import '../_vendor/sassy-lists/stylesheets/functions/purge';
@import '../_vendor/sassy-lists/stylesheets/functions/remove';
@import '../_vendor/sassy-lists/stylesheets/functions/replace';
@import '../_vendor/sassy-lists/stylesheets/functions/to-list';
// Settings
// import your own `settings` here or
// import and modify the default settings through
@import 'settings/settings';
Выполняет код в файлах SCSS для генерации переменных и микширования. Вот пример переменной:
$dropdown-padding: 1rem !default;
Вот пример микса:
@mixin foundation-typography {
@include foundation-typography-base;
@include foundation-typography-helpers;
@include foundation-text-alignment;
@include foundation-print-styles;
}
Компиляция этого в CSS будет генерировать точно ничего. У вас будет набор переменных, которые вы могли бы использовать, и набор микс-внов (функций, в основном), которые вы могли бы вызвать, но пока вы этого не сделаете, вы не будете генерировать CSS. Итак, следующая вещь, которую вы могли бы сделать, это комментарий в этой строке:
// Settings
// import your own `settings` here or
// import and modify the default settings through
@import 'settings/settings';
Однако вы все равно ничего не получите, потому что все это - устанавливать значения по умолчанию для ваших переменных (так что устанавливайте шрифты, цвета, расстояния и т.д.). Что вам нужно сделать, так это создать новый SCSS файл (позвоните ему test.scss), чтобы начать что-то вроде этого:
@import 'foundation';
@include foundation-global-styles;
@include foundation-xy-grid-classes;
В первую строку входит файл, который ссылается на все другие файлы SCSS.
Вы можете получить список возможных вещей, которые можно включить в сайт Zurb здесь. Что это значит, это запустить ряд микс-инков. Здесь, например, начало того, что называется "base-global-styles", которое вы можете найти в файле global.scss:
@mixin foundation-global-styles {
@include -zf-normalize;
// These styles are applied to a <meta> tag, which is read by the Foundation JavaScript
.foundation-mq {
font-family: '#{-zf-bp-serialize($breakpoints)}';
}
Это эти миксы, которые генерируют CSS. Все это, вероятно, было очевидно для всех остальных, но это было не для меня!