J'ai des problèmes avec Foundation 6 fichiers, pour certaines raisons, ils n'incluent tout simplement pas tous les composants sass. J'ai essayé d'utiliser Foundation 5 et cela a bien fonctionné.
Voici ma tâche d'avance:
gulp.task('styles', ['clearCss'], function() {
gulp.src('assets/sass/app.scss')
.pipe(plumber(plumberErrorHandler))
.pipe(sourcemaps.init())
.pipe(sass({
outputStyle: 'compressed'
})
.on('error', notify.onError(function(error) {
return "Error: " + error.message;
}))
)
.pipe(autoprefixer({
browsers: ['last 2 versions', 'ie >= 9']
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./assets/dist/css'))
.pipe(browserSync.stream({match: '**/*.css'}))
.pipe(notify({
message: "Styles task complete!"
}));
});
Et voici mon app.scss:
// Import Foundation
@import "../components/foundation/scss/foundation";
Cela fonctionne avec mes propres fichiers sass, mais en ignorant complètement les éléments de base.
Vous devez importer un fichier foundation-sites.scss et non scss/foundation.scss. Le fichier foundation.scss n'a qu'un @mixin foundation-everything qui est inclus dans foundation-sites.scss:
@include foundation-everything;
Cependant, foundation-sites.scss a une erreur dans la version 6.0.4, voici mon journal:
Error in plugin 'sass'
Message:
bower_components\foundation-sites\foundation-sites.scss
Error: File to import not found or unreadable: foundation
Parent style sheet: stdin
on line 1 of stdin
>> @import 'foundation';
Le correctif:
Changer la ligne n ° 1 du fichier foundation-sites.scss de @import 'foundation';
à @import 'scss/foundation';
L’approche correcte pour la fondation 6:
si vous regardez le fichier foundation.scss ( https://github.com/zurb/foundation-sites-6/blob/develop/scss/foundation.scss )
Oui, tous les composants requis sont importés, mais comme ils sont maintenant mixins et non normaux, vous devez indiquer explicitement que vous souhaitez les utiliser, simplement en appelant le mixin.
app.scss
@import 'foundation';
@include foundation-everything; // Very important if you want to include all of foundation css to your complied css
gulpfile.js
gulp.task('scss', function() {
return gulp.src('app.scss')
.pipe(plugins.sass(
{includePaths: ['./node_modules/foundation-sites/scss']}
))
.pipe(gulp.dest('css'))
.pipe(plugins.notify({ message: 'Sass task complete' }));
});
J'ai gulp-sass travaillant avec des sites de fondation (Foundation 6):
Mon fichier main.scss:
@charset 'UTF-8';
/**
* Main SCSS
* Version 1.0.0
* built with foundation-sites
*/
// import custom settings
@import 'settings';
// import foundation sass
@import "../bower_components/foundation-sites/scss/foundation";
/* either include all foundation components… //*/
@include foundation-everything;
/* or include specific foundation components //*/
// @include foundation-global-styles;
/* include either foundation-grid… //*/
// @include foundation-grid;
/* or foundation-flex-grid (but don't include both) //*/
// @include foundation-flex-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;
Si vous ne voulez pas charger tous les composants de base, vous n’êtes pas obligé. Au lieu de @include foundation-everything
, simplement @include
les composants spécifiques dont vous avez besoin.
Ce que j'ai fait avec ma configuration gulp + bower: /src/scss/app.scss
@import 'settings';
@import '../../bower_components/foundation-sites/scss/foundation';
@include foundation-everything;
settings.scss
contenait mes substitutions de variable de base, CSS personnalisé, etc. L'astuce pour moi consistait à @import
chemin complet du fichier, puis @include
le mixin.
Bien qu'il soit excessif d'inclure tout, je préfère développer sans soucis, puis utiliser uncss pour nettoyer le code CSS mort.
J'ai dû modifier le fichier bower.json des sites de la fondation pour modifier la fondation main.scss @import.
De:
"main": [
"scss/foundation.scss",
"js/foundation.js"
],
À:
"main": [
"foundation-sites.scss",
"js/foundation.js"
],
Ainsi que le fichier foundation-sites.scss.
@import 'foundation';
À:
@import 'scss/foundation.scss';
Je ne pense pas que ce soit la meilleure voie à suivre, mais mes connaissances sass, grunt et bower sont limitées.
Si vous avez un fichier gulp, incluez 'node_modules/foundation-sites/scss', puis dans votre application.scss ou style.scss, procédez comme suit:
@import "settings/settings";
@import "foundation";
@include foundation-everything;
De cette façon, vous importerez TOUT ce que Foundation a à offrir. Bien sûr, tout peut être un peu exagéré, mais c'est un choix facultatif.
Exemple de tâche d'abat:
gulp.task('css', function() {
return gulp.src(assets + 'scss/*.scss')
.pipe(sass({
includePaths: 'node_modules/foundation-sites/scss',
errLogToConsole: true
}))
.on('error', handleError)
.pipe(prefixer())
.pipe(gulp.dest(themeDir))
.pipe(browserSync.stream());
});
Bien sûr, handleError doit être défini. Dans mon cas, c'est défini comme:
var handleError = function(err) {
if (err) {
var args = Array.prototype.slice.call(arguments);
console.log(args);
this.emit('end');
}
};
N'oubliez pas d'inclure les dépendances requises.