Grunt.js:在任务完成之前修改文件后立即触发 livereload

2024-02-21

我正在使用 Grunt 来编译带有指南针的 CSS 并触发浏览器 livereload。这些是我的手表任务:

watch: {
    styles: {
        options: {
            spawn: false,
        },
        files: [assetsDir + '/**/*.scss', '!**/*.{dev,min}.scss'],
        tasks: [
            'concat:styles',
            'compass:styles',
            'imagemin:styles',
            'cssmin:styles',
            'clean:styles',
        ],
    },
    scripts: {
        options: {
            spawn: false,
        },
        files: [assetsDir + '/**/*.js', '!**/*.{dev,min}.js'],
        tasks: [
            'concat:scripts',
            'uglify:scripts',
        ],
    },
    livereload: {
        options: {
            livereload: true,
            spawn: false,
        },
        files: [assetsDir + '/**/*.{dev,min}.{css,js}'],
    },
},  

目前,livereload 任务在样式任务完全完成之前不会触发,但是 imagemin 可能会增加一些明显的延迟,而我真正关心的是 CSS,它在指南针完成后就准备好了。

如何在指南针完成后立即触发 livereload,但允许其他任务继续进行?我尝试了下面的配置,当 CSS 更改时触发 imagemin,但它似乎不起作用。对于这个 imagemin,由于某种原因根本不会触发。不能让多个任务监视同一个文件吗?

watch: {
    styles: {
        options: {
            spawn: false,
        },
        files: [assetsDir + '/**/*.scss', '!**/*.{dev,min}.scss'],
        tasks: [
            'concat:styles',
            'compass:styles',
            'cssmin:styles',
            'clean:styles',
        ],
    },
    scripts: {
        options: {
            spawn: false,
        },
        files: [assetsDir + '/**/*.js', '!**/*.{dev,min}.js'],
        tasks: [
            'concat:scripts',
            'uglify:scripts',
        ],
    },
    images: {
        options: {
            spawn: false,
        },
        files: [assetsDir + '/**/*.{dev,min}.css'],
        tasks: [
            'imagemin:styles',
        ],
    },
    livereload: {
        options: {
            livereload: true,
            spawn: false,
        },
        files: [assetsDir + '/**/*.{dev,min}.{css,js}'],
    },
},

Thanks.


我已经设法通过使用来使其工作grunt并发 https://github.com/sindresorhus/grunt-concurrent并行运行三个监视任务:

concurrent: {
    options: {
        logConcurrentOutput: true,
    },
    watch: [
        'watch:scripts',
        'watch:styles',
        'watch:livereload',
    ],
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grunt.js:在任务完成之前修改文件后立即触发 livereload 的相关文章

随机推荐

  • 在两个逻辑 CPU 之间共享 TLB 条目 (Intel)

    我想知道当属于同一程序且具有相同PCID的两个线程被安排在同一物理CPU上运行时是否可以共享TLB条目 我已经研究过SDM https www intel com content www us en developer articles t
  • 通过电子邮件或手机在 Laravel 中重置密码

    默认情况下 Laravel 5 5 的密码重置系统适用于电子邮件 但我需要添加对手机号码的支持 通过 OTP 验证并生成令牌并重定向到密码重置页面 我正在做所有这部分 并且我在password resets表上创建了一个移动列 但问题是 I
  • .CSHTML 页面将不会呈现

    我正在尝试让我的服务器运行 cshtml 文件 使用 WebMatrix 3 我可以通过右键单击并选择 在浏览器中查看 来查看页面 但该查看是通过本地计算机端口进行的 如果我尝试从 Internet 访问这些页面 则会收到 500 错误 这
  • ASP.NET Core 和 JQuery 不显眼的 AJAX 无法正常工作

    如果我在 net 4 5 中启动一个新项目并点击 管理 nuget 包 搜索 ajax 然后点击 安装 ajax unobtrusive 然后我可以进入我的 cshtml 文件并输入 Ajax 例如 Ajax beginForm 如果我使用
  • Yii - 从 URL 中消除模块的默认控制器 ID

    我创建了一个模块 其中存在一个默认控制器 现在我可以访问默认控制器中的索引操作 默认操作 例如 mymodule 对于所有其他操作 我需要在 url 中指定控制器 id 例如 mymodule default register 我想知道是否
  • JavaScript 遍历数组并用下一个减去每个项目

    我有一个如下所示的数组 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 21 19 22 20 23 我想
  • Git 在提交时指定用户和电子邮件?

    我们已经在测试服务器上创建了代码分支 多个用户现在正在通过 SSH 连接到新服务器并使用命令行进行所有提交来处理该代码 但是 Git 当然不知道是谁进行了更改并提交了这些更改 因此我们需要在提交期间指定作者 我认为我们可以通过以下方式实现这
  • 是否可以使用 Jigsaw 在 Java 9 中通过反射来访问包作用域的方法?

    我有以下代码来检索默认值URLStreamHandlers对于 http 和 https 它通过访问静态包作用域方法在 Java 8 中工作URL getURLStreamHandler private URLStreamHandler g
  • 编辑构建 R 包时生成的默认 PDF 手册

    我已成功执行以下步骤来创建我自己的 R 包 创建包的骨架并粘贴 Rd NAMESPACE and DESCRIPTION files 被处决R CMD check package name 没有错误 它还生成了 2 个 pdf 其中之一包含
  • 具有动态数组的 VBA 字典

    我正在尝试创建包含动态数组的动态字典 电子表格中的示例行 Facility Name Contact Name Contact Role 设施和联系人之间的关系是M2M 我想重新创建一个如下所示的工作表 Contact Name Facil
  • 持久化图形数据 (Java)

    我有一个利用图形 树状 自定义结构的应用程序 这些结构不是真正的树 但几乎所有东西都连接在一起 数据量也很大 可以存在数百万个节点 树节点的类型可以不同 以使其更有趣 继承 我不想改变数据结构来适应持久性存储 我想保留这些数据而不需要太多额
  • 在两个不同模式中使用两个同名表时避免 Hibernate Annotation Exception

    我有两个表 都在两个不同的模式中命名为 Language 我们将它们称为 schema1 和 schema2 当我注释每个表的模型时 我的代码如下所示 实体 Table 名称 语言 目录 模式1 公开课语言 Entity Table nam
  • 资源 FullCalendar 中的固定列宽

    我正在使用支持资源视图的 FullCalendar 特殊版本 http tux fi jarnok fullcalendar resourceviews http tux fi jarnok fullcalendar resourcevie
  • SQL删除表中不重复的条目

    我有一个有两列的表格CountryCode CountryName 中存在重复条目countrycode 但我想删除不重复的条目并保留重复的行countrycode柱子 所以我想写一个SQL语句来做到这一点 我想我必须使用having 但不
  • Ruby on Rails 生成视图

    有没有办法使用railsgenerate命令单独生成视图 我也愿意安装一个 gem 来完成现有的任务 基本上 脚手架命令给了我太多的东西 我宁愿手动编写我的控制器 但是 使用记录表编写索引视图的效率不是很高 您可以使用控制器生成器生成控制器
  • Firefox 扩展将 Javascript 数组作为对象发送

    我在将 JavaScript 数组传递给我正在编写的附加组件时遇到问题附加生成器 https builder addons mozilla org 为了进行通信 我使用事件并使用数组发送事件 但附加组件 内容脚本 获取一个对象 而不是数组
  • 尝试获取最小整数

    所以我有4个清单 我想找出哪个 list size 是最低的 我可以找到最低的 但有些结果是相同的 这是 我拥有的 if EAmount lt DAmount EAmount lt GAmount EAmount lt IAmount Fi
  • 如何解决 flutter firebase 中的此 NoSuchMethodError

    我有这段代码 应该返回 userId 问题是它返回 null 因为用户已注销 override void initState TODO implement initState super initState try widget auth
  • 如何将字符串转换为浮点数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Objective C 中将字符串转换为浮点数 https stackoverflow com questions 3191034 convert string to float in objec
  • Grunt.js:在任务完成之前修改文件后立即触发 livereload

    我正在使用 Grunt 来编译带有指南针的 CSS 并触发浏览器 livereload 这些是我的手表任务 watch styles options spawn false files assetsDir scss dev min scss