如何使用gulp从node_模块导入bootstrap 4 sass/SCS

如何使用gulp从node_模块导入bootstrap 4 sass/SCS,gulp,node-modules,gulp-watch,Gulp,Node Modules,Gulp Watch,我正试图从node_模块@import一些bootstrap 4 sass文件,但我的gulp watcher没有接收到对这些node_模块引导文件的任何更改 在我的主sass文件中,我通过以下方式导入引导: @import "bootstrap-grid"; @import "bootstrap-reboot"; @import "custom"; 然后,我还导入了一些“本地”sass文件(在node_模块之外): 这些本地sass文件被很好地监视,当我进行编辑/文件保存时,我会得到重新编译

我正试图从node_模块@import一些bootstrap 4 sass文件,但我的gulp watcher没有接收到对这些node_模块引导文件的任何更改

在我的主sass文件中,我通过以下方式导入引导:

@import "bootstrap-grid";
@import "bootstrap-reboot";
@import "custom";
然后,我还导入了一些“本地”sass文件(在node_模块之外):

这些本地sass文件被很好地监视,当我进行编辑/文件保存时,我会得到重新编译

我的sass-gulp任务如下所示:

//compile sass
gulp.task('sass', function() {
    return gulp.src('src/css/scss/**/*.scss')
        .pipe(sass({
            includePaths: ['node_modules/bootstrap/scss/']
        }))
    .pipe(gulp.dest('src/css/'));
});
对于我来说,获取引导文件的关键部分是使用includePaths部分

我正在获取引导网格,我想做的是更新节点\u modules/bootstrap/scss/\u custom.scss(我正在导入该节点),以将引导覆盖放置在其中

当我编辑/保存任何节点\模块引导文件时,我不太确定如何使引导重新编译

我尝试将IncludePath更新为:

includePaths: ['node_modules/bootstrap/scss/**/*.scss']
但这会引发一个错误,“导入未找到的文件”(引导网格),这对我来说也很奇怪,因为它似乎应该在bootstrap/scss中添加/查看sass文件(以及任何子目录)

此时,我的文件结构非常简单:

root
  |
  | node_modules
      | bootstrap
         | scss
  | src
      | css
         | scss
gulpfile.js

尝试将节点_模块中的sass文件添加到gulp.watch:

    gulp.watch([
        'node_modules/bootstrap/scss/**/*.scss', 
        'src/css/scss/**/*.scss'
    ], ['sass']);

希望能有所帮助。

自定义节点单元中的文件是一种不好的做法。你可以在导入引导文件后加载一个定制的css文件来覆盖那些值OK,是的,这很公平,我同意。我只是想弄清楚如何从位于不同目录中的sass文件中重新编译。如果导入已经存在于您的scss文件中,您不必这样做,sass编译器会处理这个问题。这就是我的问题所在,当我在node_模块中更改bootstrap的_custom.scs时,它不会重新编译。我的“本地”src/css/scss文件是。回顾过去,我的示例并不是最好的,因为正如您所指出的,您不想在node_模块中编辑文件,但我只是想弄清楚为什么我不能在src/css/scss之外的save文件上编译
    gulp.watch([
        'node_modules/bootstrap/scss/**/*.scss', 
        'src/css/scss/**/*.scss'
    ], ['sass']);