编辑:检查版本信息。 grunt-contrib-watch 现在支持 livereload。
真是太棒了。我也遇到了这个问题,所以让我尽我所能解释(或者至少让你开始运行)。请记住,我就是这样设置它的,而且它似乎大部分时间都可以工作。
首先,您需要确保已使用正确的依赖项更新了您的package.json。我不确定 livereload 是否适用于“监视”任务中的烘焙,我最近一直在使用grunt-regarde。我的 package.json 通常是这样的:
"dependencies": {
"grunt": "~0.4.x",
"grunt-contrib-livereload": "0.1.2",
"grunt-contrib-connect": "0.2.0",
"grunt-regarde": "0.1.1"
},
Obvi 你想要 grunt (duhhh)、livereload、connect 似乎有助于挂载文件夹,并且像 grunt-watch 一样,它似乎工作得更好(我忘记了具体原因)。
如果您愿意,可以通过在其自己的“devDependencies”对象中指定 livereload 来使您的 package.json 更好。现在,运行您的老式 npm install 以获取项目中的好东西。
让我们谈谈 gruntfiles:
您可能知道,gruntfile 是魔法发生的原因。在你的 gruntfile 底部的某个地方,你需要指定
grunt.loadNpmTasks('grunt-regarde');
grunt.loadNpmTasks('grunt-contrib-livereload');
grunt.loadNpmTasks('grunt-contrib-connect');
在您的 gruntfile 顶部,我们将要添加一些用于 livereload 的实用程序。在/*global module:false*/ 下,继续添加var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;。
在那之后,你真的不需要学习连接,你只需要使用它。检查我的风格:
var folderMount = function folderMount(connect, point) {
return connect.static(path.resolve(point));
};
这在module.exports = function(grunt) { 之前出现
现在让我们深入了解 gruntfile。再一次,我忘记了 connect 在做什么,但这是中间件魔法发挥作用的地方。在你的 modules.exports 中,添加:
connect: {
livereload: {
options: {
port: 9999,
middleware: function(connect, options) {
return [lrSnippet, folderMount(connect, '.')]
}
}
}
},
现在我们要监视文件。我喜欢设置一些不同的任务,因为我不希望每次保存 CSS 文件时都运行整个 grunt 进程。这是我的工作内容(再次添加到module.exports):
regarde: {
txt: {
files: ['styles/*.css', 'index.html'],
tasks: ['livereload']
},
styles: {
files: ['sass/*.scss', 'sass/*/*.scss'],
tasks: ['compass']
},
templates: {
files: ['templates/*.jade'],
tasks: ['jade']
}
},
您可以看到我仅希望在我编译的 css (*.css) 或编译的 html 发生更改时触发 livereload。如果我编辑 SCSS 文件,我只想启动指南针。如果我编辑一个翡翠模板,我只想将翡翠触发到 HTML 编译器。我想你可以看到发生了什么。你可以玩弄这个,只是要聪明一点,因为你可能会陷入无限循环。
最后,您需要启动这些进程。我喜欢将它们全部与我的主要 grunt 任务联系起来,因为我的 gruntfile 只是 甜蜜。
// Default task.
grunt.registerTask('default', ['livereload-start', 'connect', 'regarde']);
现在,当您在 CLI 中启动 grunt 时,您应该(希望,也许,交叉手指)得到如下内容:
Running "connect:livereload" (connect) task
Starting connect web server on localhost:9999.
浏览到 http://localhost:9999/yourpage.html 并观看魔术发生。
full gruntfile here.full package.json here.