当页面重新加载时,或通过 Livereload 重新加载 Gulp 手表

如何解决当页面重新加载时,或通过 Livereload 重新加载 Gulp 手表

我最近遇到了一个令人恼火的问题,我无法弄清楚:当我的 gulp watch 任务正在运行时,如果我手动刷新 Livereload 正在观看的页面,sass 任务将触发(它会声称 screen.css 有被触摸过),然后将继续触发,而我不会在后台对监视的文件进行任何更改,就好像它在累积“监视”,直到 MING 最终崩溃或陷入无法使用的任务。

我注意到的一件事:如果 sass 任务指定了任何目录深度,则会导致错误:

'styles/sass/**/*.scss' (will trigger when partials are touched,or page is refreshed; goes insane eventually) 
'styles/sass/*.scss' (only triggers when screen.scss is touched as expected)

所以我怀疑 sass globbing 有问题。

我尝试过的事情:

  • 恢复我所有的 sass 相关或 livereload gulp 包以匹配另一个不这样做的本地站点
  • 确保 CMS 没有修改 screen.css(它最初确实有 filemtime())
  • 删除 screen.scss 中的所有部分
  • 关闭 Windows 文件历史记录

我的 gulpfile 的简化版本:

    var gulp            = require('gulp');
    var sass            = require('gulp-sass');
    var livereload      = require('gulp-livereload');
    var cleancss        = require('gulp-clean-css');
    var rename          = require('gulp-rename');
    var notify          = require('gulp-notify');
    var plumber         = require('gulp-plumber');
    var autoprefixer    = require('gulp-autoprefixer');
    var sassglob        = require('gulp-sass-glob');
    var sourcemaps      = require('gulp-sourcemaps');

    gulp.task('sass',function(){
        return gulp.src('styles/sass/screen.scss')
            .pipe(plumber({errorHandler: function(err) {
                notify.onError({
                            title:    "Gulp: [sass]",subtitle: "Error",message:  "<%= error.message %>",sound:    false
                        })(err);
    
                this.emit('end');
            }}))
            .pipe(sourcemaps.init())
            .pipe(sassglob())
            .pipe(sass())
            .pipe(autoprefixer({
                cascade: false
            }))
            .pipe(cleancss({
                compatibility: '*',}))
            .pipe(gulp.dest('styles'))
            .pipe(livereload())
            .pipe(sourcemaps.write())
            done();
    });
    
    gulp.task('watch',function(done){
        livereload.listen();
        gulp.watch(['styles/sass/**/**/*.scss'],{ usePolling: true },gulp.series(['sass']));
        gulp.watch(['../*.php','../templates/**/*.php','../partials/**/*.php'],{ usePolling: true }).on('change',livereload.changed);
    });
    
    gulp.task('default',gulp.series(['sass','watch']));

我的 screen.scss 像这样提取了我所有的 scss。这些深入几个目录并编译为 screen.css。

@charset "UTF-8";

/*
utilities
*/
@import "utility/**/*";

/*
vendor
*/
@import "vendor/**/*";

/*
globals
*/
@import "globals/**/*";

/*
modules
*/
@import "modules/**/**/*";

/*
templates
*/
@import "templates/**/*";

再说一次,我的一般设置多年来一直运行良好,所以我想知道这是否是刚刚搞砸的 gulp 软件包之一的新版本?

最后,我的文件结构:

/assets/
/assets/styles/
/assets/styles/sass/
/assets/styles/sass/globals/ ...
/assets/styles/sass/modules/ ...
/assets/styles/sass/components/ ...
/assets/styles/sass/screen.scss
/assets/styles/screen.css

解决方法

好吧,笨蛋:

我在 CMS 中有一个函数,可以在页面刷新时编写 sass 部分。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res