我的 Gruntfile 出现了一些意外行为。我注册了一个如下所示的任务: grunt.registerTask('dev', ['jekyll:server', 'watch:jekyll'])
希望它能顺序启动一个 jekyll服务器,然后监视我的项目的特定文件更改(使用 grunt-contrib-watch
插件)。一旦检测到这些更改,它就会自动重新运行 jekyll:server
。
我遇到的问题是,当我运行 grunt dev
时,它将启动 Jekyll 服务器,但不会运行 watch
命令。但是,如果我从 grunt dev
中删除服务器任务,它将按预期运行 watch
命令。
下面是我的 Gruntfile 的内容。谁能帮我理解发生了什么?
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
选项使任务阻塞,因为它是持久的。您可以使用任务 watch
option或类似grunt-concurrent同时运行 jekyll
和 watch
:
grunt.initConfig({
concurrent: {
target: {
tasks: ['jekyll:server', 'watch'],
options: {
logConcurrentOutput: true
}
}
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.registerTask('default', ['concurrent:target']);
关于gruntjs - 咕噜声 : watch command never runs when including other tasks in registerTask method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849018/