我是nodeJS和grunt的新手。我在这个项目中有这个Gruntfile,我想为我项目中的所有html文件进行实时重新加载,这样我就不必一直刷新浏览器来检测新的更改。不知何故,我遇到以下代码的错误:
module.exports = function (grunt)
{
// Project configuration.
grunt.initConfig(
{
// Task configuration.
jshint:
{
options:
{
curly: true,
eqeqeq: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
sub: true,
undef: true,
unused: true,
boss: true,
eqnull: true,
browser: true,
globals: {}
},
gruntfile:
{
src: 'Gruntfile.js'
},
lib_test:
{
src: ['lib/**/*.js', 'test/**/*.js']
}
},
connect:
{
server:
{
options:
{
hostname: 'localhost',
port: 80,
base: 'src',
keepalive: true,
livereload: true
}
}
},
watch:
{
options:
{
livereload:true
}
}
});
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
// Default task.
grunt.registerTask('default', ['connect', 'watch']);
};
似乎当我开始' grunt默认'它不会执行任务监视,因为在连接期间它是keepalive。
如果任何人能够向我解释为什么我在JSHint检查我的代码并提出解决方案时会出现此错误,我将不胜感激。
答案 0 :(得分:6)
您的watch
任务没有任何任务或文件。要使其与grunt-contrib-connect
一起使用,您需要包含的不仅仅是livereload
选项,例如:
watch: {
options: {
livereload: true
},
taskName: { // You need a task, can be any string
files: [ // Files to livereload on
"app/js/*.js",
"app/templates/*.html"
]
}
}
或者替代:
watch: {
taskName: {
options: { // Live reload is now specific to this task
livereload: true
},
files: [ // Files to livereload on
"app/js/*.js",
"app/templates/*.html"
]
}
}
此处匹配glob模式的所有文件应该按照您的预期工作。如果您只是为浏览器重新加载这些参数,则无需在此处指定tasks
参数。
此外,如果您要在connect
旁边使用watch
服务器,则应删除keepalive参数,因为它是阻塞任务,并且可能会阻止执行watch
任务:
connect: {
server: {
options: {
port: 8080,
base: 'src',
livereload: true
}
}
}
答案 1 :(得分:0)