Gulp SASS无法编译@import更改

时间:2019-01-27 07:46:02

标签: npm sass gulp gulp-sass

我们正在运行Gulp 4,并且有一个主要的scss文件,该文件通过@import来部分提取。例如:Failed to minify the code from this fileapp.scss中有一行app.scss

我们还有一个名为@import "partials/_mypartial.scss";的正在运行的任务,在解决此问题时,我们当前正在通过styles手动运行。

问题是,如果我们直接更改gulp styles,例如添加更多app.scss部分,或者更新文件中的注释,@import会完美工作并编译gulp-sass文件。

但是,如果我们要做的只是更新部分文件(并且.css中没有任何变化),即混合或声明,则app.scss不会在运行{{1}时提取更新}任务。

最终发生的是,创建了gulp-sass文件,并将其放置在dest目录中,其时间戳与上次“处理” styles时的时间戳相同,但未对部分文件进行更改。

我们没有告诉gulp-sass缓存任何内容,而是使用默认设置。知道为什么仅更新部分文件时会发生这种情况吗?

目录结构:

css
app.scss

app.scss内容:/assets/src/scss/app.scss
_mypartial.scss内容:/assets/src/scss/partials/_mypartial.scss

注意:这些是解决问题的测试文件。如果我们要做的只是触摸_mypartial.scss,即,将左边距更改为其他值,则手动运行@import "partials/mypartial";不会获取更改。如果我们触摸app.scss,则会根据需要获取_mypartial.scss的更改。

Gulpfile片段:

.row { margin-left: -35px; }

1 个答案:

答案 0 :(得分:0)

由于您尚未提供gulpfile.js的内容,而且我也不知道您的目录结构-这是我根据您的问题做出的假设:

  1. 我想您正在看SCSS的任务,看起来像这样: gulp.watch('styles/*.scss', ['styles']);
  2. 我想您的局部文件存储在主SCSS文件的子目录中

如果我的假设是正确的,那么答案很简单。请注意,全局定义为styles/*.scss。这意味着“所有直接具有.scss扩展名的文件都位于目录styles中”。由于部分内容存储在子目录中-它们根本不匹配此全局变量,因此没有受到监视。

修复也非常简单-您需要更新观看状态以包含子目录:styles/**/*.scss