Sass 什么是吞咽';这包括你做的事吗?

Sass 什么是吞咽';这包括你做的事吗?,sass,gulp,bourbon,neat,Sass,Gulp,Bourbon,Neat,我正试图在我的项目中开始使用Bourbon和Neat Sass库。我想用Gulp编译Sass。这是一个简单的样式任务设置,我在其中一个教程中找到: var gulp = require('gulp'), sass = require('gulp-sass'), neat = require('node-neat').includePaths; var paths = { scss: './assets/styles/*.scss' }; gulp.task('styl

我正试图在我的项目中开始使用Bourbon和Neat Sass库。我想用Gulp编译Sass。这是一个简单的
样式
任务设置,我在其中一个教程中找到:

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');
});
然后在主
.scss
文件中,我放置导入:

@import "bourbon";
@import "base/base";
@import "neat";
此任务执行正确

让我困惑的是,
includePaths
到底做了什么? 根据上面的例子,有人能给我解释一下
includePath
的角色是什么吗

包含路径

类型:数组默认值:[]

libsass可以查找的路径数组,以尝试解析@import声明。使用数据时,建议您使用此选项


在sass中,您可以在多个文件夹中组织您的sass文件,但您希望main.sass能够在编译时导入它们,因此您可以指定
includePaths
,以便sass知道在哪里可以找到
@import-sass文件
,如果您想从中导入某些样式,默认情况下,这里使用
节点整洁
,sass不知道在哪里查找,因此您需要告诉sass在哪里找到要导入的文件

在解析sass@imports时,sass编译器使用LoadPath中的每个路径

loadPaths: ['styles/foo', 'styles/bar']

@import "x"; // found via ./styles/foo/_x.scss
@import "y"; // found via ./styles/bar/_y.scss
请注意,编译器通过从左到右考虑
loadpath
中的每个路径来解析每个@import(类似于UNIX环境中的
$path
)。一个示例场景可以是:

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
styles/i
中没有
\u x.scss
文件,因此它继续查看
styles/ii
。最终,它在
styles/iii
中找到了一个
\u x.scss
文件并完成了查找。它查看
loadpath
中的每个文件夹,从数组中的第一个元素开始向右移动。尝试所有路径后,如果找不到该文件,则声明该@import语句无效

如果有外部库(如bournon/neat),则加载路径非常有用。
外部库很大,将使用大量@import语句。但是,它们与您的项目文件夹结构不匹配,因此无法解析。但是,您可以向加载路径添加额外的文件夹,以便外部库中的@imports可以解析。

这是非常清楚的解释。仍然让我困惑的是这种语法:
neat=require('node-neat')。includePaths
包含路径:['styles'].concat(整洁)
['styles']
是用于项目的文件夹。。。解析SASS文件中的@import语句。
niat
变量包含一个额外路径数组,用于解析niat的SASS文件中的路径。尝试添加
gutil.log(整洁)
以查看正在添加的路径(有关如何添加gutil的信息,请参阅)。我们使用concat将它们合并在一起,得到
['style',,…]
。如果您对
require
的语法感到困惑,您应该阅读“Common JS Modules”,特别是“module.exports”的含义。像(node-neat)这样的NPM包使用这种表示法。节点整洁模块是。当问题只提到
包含路径时,谈论
加载路径
。经典的堆栈溢出。