我刚刚开始使用Grunt,并希望每次修改文件时使用grunt-contrib-watch
[GitHub page]来运行我的JavaScript(使用grunt-contrib-jshint
[GitHub page])并且同时使用grunt-nodemon
[GitHub page]运行grunt-concurrent
[GitHub page]。
据我所知(我显然没有)我的Gruntfile应该:
concurrent
concurrent
运行watch
watch
都会运行jshint
Gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
concurrent: {
dev: [
'watch'
],
options: {
logConcurrentOutput: true
}
},
jshint: {
server: [
'**/*.js',
'!node_modules/**/*.js'
],
options: {
node: true
}
},
watch: {
all: [
'**/*/.js',
'!node_modules/**/*.js'
],
tasks: [
'jshint'
]
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', [
'concurrent:dev'/*,
'jshint',
'watch'*/
]);
};
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', [
'concurrent:dev'
]);
};
N.B。我还没有将grunt-nodemon
添加到混音中。
看起来concurrent
正在运行watch
但是当我修改文件时,它显示jshint
未运行。我当然不会在终端中获得任何输出(我认为logConcurrentOutput: true
会这样做。)
以下是我在终端中获得的输出:
Running "concurrent:dev" (concurrent) task
Running "watch" task
Waiting...
Done, without errors.
我还想在第一次运行jshint
任务时(以及修改文件时)运行default
。
任何人都可以了解我出错的地方吗?
谢谢!
答案 0 :(得分:6)
如果没有找到“观看”的文件,watch
任务将退出;根据{{3}}。
要轻松告诉watch
查看与jshint
任务相同的文件,我使用Grunt的模板引擎来引用与Array
任务相同的jshint
个文件。< / p>
然后我将jshint
添加到要运行的并发任务列表中,以便最初运行它并修改文件(使用watch
)。
这是我的工作Gruntfile
:
module.exports = function (grunt) {
grunt.initConfig({
concurrent: {
dev: [
'jshint',
'watch'
],
options: {
logConcurrentOutput: true
}
},
jshint: {
server: [
'**/*.js',
'!node_modules/**/*.js'
],
options: {
node: true
}
},
watch: {
files: '<%= jshint.server %>',
tasks: [
'jshint'
]
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', [
'concurrent'
]);
};
答案 1 :(得分:1)
如果您运行的是Express服务器,则可以使用grunt-express-server。该文档对JSHINT和LiveReload + Watch / Regarde的使用提供了很好的指导。
grunt.initConfig({
jshint: {
all: ['Gruntfile.js', 'public/javascripts/*.js', 'test/**/*.js']
},
watch: {
express: {
files: ['**/*.js', '**/*.ejs'],
tasks: ['jshint', 'express:dev'],
options: {
spawn: false
}
}
},
express: {
dev: {
options: {
script: './app.js'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-express-server');
grunt.loadNpmTasks('grunt-contrib-watch');
// Default task(s).
grunt.registerTask('server', [ 'express:dev', 'watch' ]);
});
答案 2 :(得分:0)
Jonathon你需要检查你的globbing模式是否真正匹配任何文件。由于该问题的链接建议您可以尝试nonull
选项。我还建议用标志--debug
进行咕噜声,这样你就可以看到更多关于幕后发生的事情。
This is a working Gruntfile启动节点服务器,监视更改和livereload。它使用grunt-express插件。