Gruntjs grunt:watch命令在registerTask方法中包含其他任务时从不运行
我的Gruntfile有一些意想不到的行为。我注册了一个类似这样的任务:Gruntjs grunt:watch命令在registerTask方法中包含其他任务时从不运行,gruntjs,jekyll,grunt-contrib-watch,Gruntjs,Jekyll,Grunt Contrib Watch,我的Gruntfile有一些意想不到的行为。我注册了一个类似这样的任务:grunt.registerTask('dev',['jekyll:server','watch:jekyll']),希望它能依次启动一个jekyll服务器,然后观察我的项目中的特定文件更改(使用grunt contrib watch插件)。一旦检测到这些更改,它将自动重新运行jekyll:server 我遇到的问题是,当我运行gruntdev时,它会启动Jekyll服务器,但不会运行watch命令。但是,如果我从grunt
grunt.registerTask('dev',['jekyll:server','watch:jekyll'])
,希望它能依次启动一个jekyll服务器,然后观察我的项目中的特定文件更改(使用grunt contrib watch
插件)。一旦检测到这些更改,它将自动重新运行jekyll:server
我遇到的问题是,当我运行gruntdev
时,它会启动Jekyll服务器,但不会运行watch
命令。但是,如果我从grunt dev
中删除服务器任务,它将按预期运行watch
命令
下面是我的Grunfile文件的内容。有人能帮我理解发生了什么吗
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
jekyll: {
server : {
server: true,
server_port: 4000,
exclude: ['node_modules']
},
prod: {
dest: './_site-release'
}
},
watch: {
jekyll: {
files: ['_posts/**/*.md', '_layout/*.html', '_includes/*.html', 'index.html'],
tasks: ['jekyll:server']
}
}
});
grunt.loadNpmTasks('grunt-jekyll');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', 'jekyll:server');
grunt.registerTask('dev', ['jekyll:server', 'watch:jekyll']);
grunt.registerTask('release', 'jekyll:prod');
};
server
选项使任务块保持不变。您可以使用任务或类似的操作同时运行jekyll
和watch
:
grunt.initConfig({
concurrent: {
target: {
tasks: ['jekyll:server', 'watch'],
options: {
logConcurrentOutput: true
}
}
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.registerTask('default', ['concurrent:target']);