我们正在运行Gulp 4,并且有一个主要的scss文件,该文件通过@import来部分提取。例如:Failed to minify the code from this file
和app.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; }
答案 0 :(得分:0)
由于您尚未提供gulpfile.js
的内容,而且我也不知道您的目录结构-这是我根据您的问题做出的假设:
gulp.watch('styles/*.scss', ['styles']);
如果我的假设是正确的,那么答案很简单。请注意,全局定义为styles/*.scss
。这意味着“所有直接具有.scss
扩展名的文件都位于目录styles
中”。由于部分内容存储在子目录中-它们根本不匹配此全局变量,因此没有受到监视。
修复也非常简单-您需要更新观看状态以包含子目录:styles/**/*.scss