问题标签 [grunt-contrib-watch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1156 浏览

javascript - 拆分 grunt watch 任务

所以我有5个grunt-contrib-watch任务:

  • sass 编译 sass 文件
  • testConcat 连接测试
  • implementationConcat 连接实现文件以进行测试
  • 预编译车把模板的模板
  • karma 启动 karma 测试运行

我知道grunt watch会看所有的,但我真的需要把它们分成两组——前四个是我的设计师运行静态服务器并做 sass 工作的时候,后两个是我做 js 工作的时候.

grunt-concurrent过去常常将它们分开并同时运行它们,但是虽然这有效,但它似乎有点像黑客。我错过了什么吗?

0 投票
2 回答
4319 浏览

javascript - Grunt:查看多个文件,仅编译更改 - livereload 中断?

我完全是 Grunt 和 Javascript/Coffeescript 的新手。

我们在一个包含数百个 .coffee 文件的大型项目中使用 Grunt。由于 Grunt 编译了所有的咖啡文件(尽管只有一个文件发生了变化),我最初的问题是如何让 Grunt 只编译一个已更改的文件。使用stackoverflow我能够回答这个问题,谢谢大家:)

但现在看来,实施的解决方案打破了 livereload。当我从“grunt server”开始并在浏览器中显示我的页面时,一切看起来都很好。然后我更改一个 .coffee 文件并保存它。该文件被编译(我检查过),但我的浏览器永远不会重新加载。只有当我手动重新加载浏览器时,才会显示新的修改代码。

所以问题是:为什么 livereload 不再起作用?

我不知道这是否重要,但 Gruntfile 是使用 yeoman 在旧版本中创建的(使用 grunt-regarde)。我使用 grunt-contrib-watch 和 buildin livereload 将 package.json 和 Gruntfile 更新为更新的规范。没有grunt.event.on一切工作正常。

来源(部分):

grunt-contrib-watch 与 version 一起使用v0.4.4,connect-livereload 与 version 一起使用0.2.0

0 投票
9 回答
32861 浏览

gruntjs - 如何同时运行两个 grunt watch 任务

是否可以同时运行两个监视任务?

我知道我可以在手表设置中执行任意数量的任务,只需启动grunt watch它就会监视所有这些,就像这样

...但我不需要这个。我只想有不同的开发和生产任务集。您可以猜到, A(生产)和B (开发)之间的唯一区别是缩小和连接。我不需要同时启动AB任务。

首先我带着这个想法

但这没有用。只是首先观察任务正在工作(C从不工作)。有可能做我想做的事吗?

0 投票
1 回答
275 浏览

gruntjs - Grunt 手表不运行

我一直无法弄清楚如何运行 grunt-contrib-watch。按规定运行grunt watch只会导致:

然后我再次回到我的命令提示符,没有监视进程阻止输入,也没有显示在任务管理器中;从昨晚开始,我一直在搞砸这个问题,但仍然无法弄清楚我做错了什么。这是我的gruntfile;我正在使用 Windows 7 机器,如果有帮助的话。

0 投票
1 回答
1034 浏览

gruntjs - 是否可以在监视任务之后运行任务?

我有一个不能在grunt-php上运行的基于 PHP 的项目。相反,我使用grunt-exec来运行我的 MAMP 服务器进行开发。

在我的自定义开发任务中,我在监视任务之前运行 MAMP 启动脚本。然后,我在退出监视任务后尝试停止 MAMP 服务器。

但是,如果我使用 Ctrl-C 退出任务,该exec:serverdown任务似乎永远不会运行。有什么办法可以使这项工作?由于服务器永远不会关闭,因此在我手动运行停止脚本之前,该端口被占用,如果我在关闭之前尝试再次运行默认任务,则会出现错误。

如果没有,还有其他方法可以完成同样的事情吗?

0 投票
3 回答
805 浏览

gruntjs - 如何让 grunt-watch 重新加载正确的 css 文件?

我的目标是在我保存对样式表的更改时使用 grunt-watch 实时重新加载我的样式表。

我的咕噜声文件在下面。

当我运行 grunt 时,文件正在按预期进行监视,但没有重新加载正确的 css 文件。

我可以在 Chrome 开发工具中看到 | 一些样式表正在实时重新加载的“网络”选项卡。

但是,一些样式表没有被实时重新加载,包括我正在更改的那个。

我究竟做错了什么?我的“文件”选项值有错误吗?

0 投票
1 回答
758 浏览

gruntjs - grunt:当在 registerTask 方法中包含其他任务时,watch 命令永远不会运行

我的 Gruntfile 出现了一些意外行为。我已经注册了一个看起来像这样的任务:grunt.registerTask('dev', ['jekyll:server', 'watch:jekyll'])希望它会顺序启动一个 jekyll 服务器,然后监视我的项目是否有特定的文件更改(使用grunt-contrib-watch插件)。一旦检测到这些更改,它将jekyll:server自动重新运行。

我遇到的问题是,当我运行时grunt dev,它会启动 Jekyll 服务器,但不会运行watch命令。但是,如果我从中删除服务器任务grunt dev,它将watch按预期运行命令。

下面是我的 Gruntfile 的内容。谁能帮我理解发生了什么?

0 投票
1 回答
295 浏览

javascript - Gruntjs - 监视大量子目录和文件的变化

我最近才开始使用 grunt.js,我想知道是否可以监视大型文件夹结构的变化?

它在小型项目文件夹结构中对我来说很好,但是当尝试观看像 magento 或 wordpress 这样的整个系统甚至其中的一部分时,它只是挂在那里并且没有发现任何变化。

难道我做错了什么?

这是我的 gruntfile.js:

如果您熟悉 magento,则 gruntfile 位于

D:\wamp\www\magento\app\design\frontend\myTheme\default\

并在“模板”文件夹中查找文件更改。

“模板”文件夹中有 404 个文件和 242 个文件夹。公平地说,这并不多……我不明白为什么它几乎没有立即找到更改而只是挂起。

当仅将一个子目录(例如:/page 包含 25 个文件和 4 个文件夹)添加到 gruntfile 文件源引用时,它会立即找到更改。

例子:

我希望我能够清楚地通过我的问题。如果有不清楚的地方请告诉我。

感谢您的时间!

0 投票
1 回答
12619 浏览

node.js - 如何根据文件更改修改 grunt watch 任务?

我正在编写一个 node.js 程序,它将监视一个充满大量(300-ish)scss 项目的目录。Grunt-watch(通过 node 模块运行或单独运行,无论工作如何)将被配置,以便每当更改 scss 文件时,它将使用 compass 编译,输出文件移动到单独的目录,例如:

./1234/style.scss 已更改 >> grunt-watch 运行 grunt-compass >> /foo/bar/baz/1234/style.css 已更新

文件所在的项目目录显然非常重要(如果 grunt-compass 将所有编译后的文件都发送到同一个目录,它们将变得混乱且无法使用,并且 grunt 自动化将毫无目的)。我为了确保所有文件都被路由到正确的位置,每次更新 css 文件时我都会动态更改 grunt-compass 设置。

示例 gruntfile:

但是,这不起作用。如果您在详细模式下运行“grunt watch”,您将看到 grunt 在单独的进程中运行 grunt.event.on 函数和 watch 任务。gruntfile 的第二次解析将我的所有 event.on 配置更改恢复为上面的默认值,并且 compass 无法运行。

正如在 event.on 评论中看到的那样,我尝试添加一个 grunt.task.run() 以确保 compass 与 event.on 函数在同一进程中运行,这将保留我的配置更改。但是任务拒绝运行,可能是因为我做错了

不幸的是,grunt.event.on 变量没有发送到定义的 grunt-watch 任务,否则我可以编写一个自定义函数来更改罗盘设置,然后在同一进程中运行罗盘。

我已经尝试在没有 grunt 的情况下实现这一点,使用内置于 compass 的 watch 功能,但是 compass 只能为每个项目存储一个静态输出路径,并且一次只能观看一个项目。

我目前已经通过添加一个节点程序来解决这个问题,该程序将站点名称作为参数,通过使用 fs 运行重写 grunfile.js,然后通过 exec 函数运行“grunt watch”。然而,这有它自己的缺点(我无法查看 grunt.log 数据)并且非常复杂,所以我想改变它。

非常感谢您的任何见解。

0 投票
0 回答
133 浏览

node.js - 如何获取 grunt-watch 调用的任务来保存配置数据?

在 Grunt 中,我定义了一个server加载一些配置数据并调用grunt.config.set保存它的任务。然后,它运行一些其他任务,其中watch. 反过来,该任务会在文件更改replace时调用该任务。.html

现在,我的问题是在replace任务中,我似乎无法访问server任务中加载的配置数据。我如何确保它可以访问它?