如何使用 gulp 从 node_modules 导入 bootstrap 4 sass/scss

Posted

技术标签:

【中文标题】如何使用 gulp 从 node_modules 导入 bootstrap 4 sass/scss【英文标题】:How to import bootstrap 4 sass/scss from node_modules using gulp 【发布时间】:2017-11-26 07:57:47 【问题描述】:

我正在尝试从 node_modules 中 @import 一些 bootstrap 4 sass 文件,但我的 gulp watcher 没有对这些 node_modules 引导文件进行任何更改。

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

@import "bootstrap-grid";
@import "bootstrap-reboot";
@import "custom";

然后我还导入一些“本地”sass 文件(在 node_modules 之外):

@import "some-file";
@import "some-other-file";
etc.

这些本地 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 部分。

我正在获取引导网格,我想要做的是更新 node_modules/bootstrap/scss/_custom.scss(我正在导入)以放置引导覆盖。

当我编辑/保存任何 node_modules 引导文件时,我不太确定如何让引导程序重新编译。

我尝试将 includePaths 更新为:

includePaths: ['node_modules/bootstrap/scss/**/*.scss']

但这会引发错误,“找不到要导入的文件”(bootstrap-grid),这对我来说也很奇怪,因为它似乎应该在 bootstrap/ 中添加/监视 sass 文件(和任何子目录) scss。

此时我的文件结构很简单:

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

【问题讨论】:

自定义 node_modules 中存在的文件是一种不好的做法。导入引导文件后,您始终可以加载自定义 css 文件以覆盖这些值 好的,是的,这很公平,我同意。我只是想弄清楚如何从不同目录中的 sass 文件中重新编译。 你不必这样做,如果你的 scss 文件中已经存在导入,sass 编译器会处理这个问题。 这就是我的问题的重点,当我在 node_modules 中对 bootstrap 的 _custom.scss 进行更改时,它没有被重新编译。我的“本地” src/css/scss 文件是。回过头来看,我的示例并不是最好的,因为正如您所指出的,您不想编辑 node_modules 中的文件,但我只是想弄清楚为什么我不能在 src/css 之外编译保存文件/scss 【参考方案1】:

尝试将 node_modules 中的 sass 文件添加到 gulp.watch:

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

希望对您有所帮助。

【讨论】:

以上是关于如何使用 gulp 从 node_modules 导入 bootstrap 4 sass/scss的主要内容,如果未能解决你的问题,请参考以下文章

如果 gulp 安装在与 gulpfile.js 不同的文件夹中(node_modules),你如何运行 gulp

如何忽略 gulp:watch 中的 node_modules 目录?

如何从 node_modules 文件夹添加 package.json 依赖项?

如何在pm2中使用Grunt / Gulp?

Vue 项目运行报错 node_modules/.bin/gulp: Permission denied

包括来自 node_module(npm 包)的 css?