J'essaie de commencer à utiliser les bibliothèques Bourbon et Neat Sass dans mon projet. Je veux compiler Sass avec Gulp. Il s'agit d'une simple configuration de tâche styles
que j'ai trouvée dans l'un des didacticiels:
var gulp = require('gulp'),
sass = require('gulp-sass'),
neat = require('node-neat').includePaths;
var paths = {
scss: './assets/styles/*.scss'
};
gulp.task('styles', function () {
return gulp.src(paths.scss)
.pipe(sass({
includePaths: ['styles'].concat(neat)
}))
.pipe(gulp.dest('./dist/styles'));
});
gulp.task('default', function () {
gulp.start('styles');
});
Puis dans le principal .scss
fichier je place les importations:
@import "bourbon";
@import "base/base";
@import "neat";
Cette tâche s'exécute correctement.
Ce qui me laisse perplexe, c'est ce que fait includePaths
exactement? Sur la base de l'exemple ci-dessus, quelqu'un peut-il m'expliquer quel est le rôle de includePath
?
Le compilateur SASS utilise chaque chemin dans loadPaths lors de la résolution de SASS @imports.
loadPaths: ['styles/foo', 'styles/bar']
@import "x"; // found via ./styles/foo/_x.scss
@import "y"; // found via ./styles/bar/_y.scss
Notez que le compilateur résout chaque @import en considérant chaque chemin dans loadPaths
de de gauche à droite (similaire à $PATH
dans un environnement UNIX). Un exemple de scénario pourrait être:
loadPaths: ['styles/i', 'styles/ii', 'styles/iii', 'styles/iv']
@import "x"; // no file at ./styles/i/_x.scss
// no file at ./styles/ii/_x.scss
// found a file at ./styles/iii/_x.scss ...
// ... this file will be used as the import
// ... terminate lookup
// the file ./styles/iv/_x.scss will be ignored
Il n'y avait pas _x.scss
fichier dans styles/i
, donc il a continué à regarder à l'intérieur styles/ii
. Finalement, il a trouvé un _x.scss
fichier dans styles/iii
et a terminé la recherche. Il examine chaque dossier dans loadPaths
en commençant par le premier élément du tableau et en se déplaçant vers la droite. Après avoir tenté tous les chemins, si nous ne pouvons pas trouver le fichier, nous déclarons que cette instruction @import n'est pas valide.
Les chemins de chargement sont utiles si vous avez une bibliothèque externe (comme bournon/neat). La bibliothèque externe est volumineuse et utilisera de nombreuses instructions @import. Cependant, ils ne correspondront pas à la structure de votre dossier de projet et ne seront donc pas résolus. Cependant, vous pouvez ajouter un dossier supplémentaire aux loadPaths afin que les @imports à l'intérieur de la bibliothèque externe do résolvent.
includePaths
Type: tableau Par défaut: []
Un tableau de chemins que libsass peut rechercher pour tenter de résoudre vos déclarations @import. Lorsque vous utilisez des données, il est recommandé de l'utiliser.
dans sass, vous pouvez organiser vos fichiers sass dans plusieurs dossiers, mais vous voulez que votre main.sass puisse les importer lors de sa compilation, afin que vous puissiez spécifier le includePaths
, afin que sass sache où trouver le fichier @import sass file
, ici vous utilisez node-neat
, si vous souhaitez en importer certains styles, par défaut, sass ne sait pas où chercher, vous devez donc indiquer à sass où trouver le fichier à importer