所以我是Grunt的新手,并一直在尝试为它和Jekyll实施工作流程。所以我有一个运行的监视任务,但它似乎无法在尝试再次启动Jekyll之前中断当前的服务任务,因为我收到有关端口绑定的错误,特别是 jekyll 2.0.3 |错误:地址已在使用中 - bind(2)
可能是我做了一些愚蠢或不理解的事情,但有人有任何想法吗?这是我的gruntfile:
module.exports = function( grunt ) {
// load time-grunt and all grunt plugins found in the package.json
require( 'time-grunt' )( grunt );
require( 'load-grunt-tasks' )( grunt );
grunt.initConfig({
csslint : {
test : {
options : {
import : 2
},
src : [ 'css/main.css' ]
}
},
cssmin : {
dist : {
src : 'css/main.css',
dest : 'css/main.min.css'
}
},
shell : {
jekyllBuild : {
command : 'glynn'
},
jekyllServe : {
command : 'jekyll serve'
}
},
watch : {
files : [ '_layouts/*.html',
'_posts/*.md',
'css/main.css',
'_config.yml',
'index.html',
'404.html' ],
tasks : [ 'cssmin',
'shell:jekyllServe' ],
options : {
spawn : true,
interrupt : true,
atBegin : true,
debounceDelay: 250
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-shell');
// register custom grunt tasks
grunt.registerTask( 'lintcheck', [ 'cssmin','csslint', 'shell:jekyllServe' ] )
grunt.registerTask( 'qbuild', [ 'cssmin', 'shell:jekyllServe' ] )
grunt.registerTask( 'deploy', [ 'cssmin', 'shell:jekyllBuild' ] )
};
非常感谢任何帮助。
答案 0 :(得分:0)
我正在开发一个具有类似工作流程但使用Gulp而不是Grunt的网站。我使用browserSync交换了默认的jekyll服务器,它还在更改时自动重新加载页面(在开发中很有用)。 This是一个示例Gulp构建文件;可以制作一个Grunt等价物。
答案 1 :(得分:0)
您遇到错误,因为您尝试多次运行jekyll serve
(服务器已在运行时)。正如您可以在文档中阅读的那样,jekyll serve
在localhost:4000(http://jekyllrb.com/docs/usage/)运行开发服务器,因此您可以同时在特定端口上仅启动一个开发服务器。之后,只需要在某些文件发生变化时将jekyll重建为./_site。您可以使用jekyll build
。
我修改了你的Gruntfile:
module.exports = function( grunt ) {
// load time-grunt and all grunt plugins found in the package.json
require( 'time-grunt' )( grunt );
require( 'load-grunt-tasks' )( grunt );
grunt.initConfig({
csslint : {
test : {
options : {
import : 2
},
src : [ 'css/main.css' ]
}
},
cssmin : {
dist : {
src : 'css/main.css',
dest : 'css/main.min.css'
}
},
shell : {
jekyllBuildLocal : {
command : 'jekyll build'
},
jekyllBuild : {
command : 'glynn'
},
jekyllServe : {
command : 'jekyll serve'
}
},
watch : {
files : [ '_layouts/*.html',
'_posts/*.md',
'css/main.css',
'_config.yml',
'index.html',
'404.html' ],
tasks : [ 'cssmin',
'shell:jekyllBuildLocal' ],
options : {
spawn : true,
interrupt : true,
atBegin : true,
debounceDelay: 250
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-shell');
// register custom grunt tasks
grunt.registerTask( 'lintcheck', [ 'cssmin','csslint', 'shell:jekyllBuildLocal' ] )
grunt.registerTask( 'qbuild', [ 'cssmin', 'shell:jekyllBuildLocal' ] )
grunt.registerTask( 'deploy', [ 'cssmin', 'shell:jekyllBuild' ] )
};
我建议你开发的是:
grunt shell:jekyllServe
grunt watch
(我想在其他终端窗口中)这应该可以正常使用