我想在我的Gruntfile.js中定义一个shell命令树,使用grunt-exec编写shell命令。
我可以用一个命令来完成这个任务,但是我无法理解编写多个命令集的语法,并且能够一个接一个地或分组地调用它们。
请有人提供一个完整的示例Gruntfile.js,具有以下任务结构?
test: `npm test`
lint:
jshint: `jshint .`
csslint: `csslint .`我来自make世界,所以我真的想把这个工作流推入我的Node.js项目,该死的Node社区会议。
我希望grunt默认为npm test
我希望grunt lint同时执行jshint .和csslint .
我希望grunt jshint只执行jshint .
发布于 2014-07-30 14:10:56
多任务支持多个目标,但它们不能嵌套。但您可以注册运行其他任务的任务。
Gruntfile.js:
module.exports = function(grunt) {
grunt.initConfig({
exec: {
test: "npm test",
jshint: "jshint .",
csslint: "csslint ."
}
});
grunt.loadNpmTasks("grunt-exec");
grunt.registerTask("default", ["exec:test"]);
grunt.registerTask("test", ["exec:test"]);
grunt.registerTask("lint", ["exec:jshint", "exec:csslint"]);
};注意,已经有很多繁重的任务可用,比如格伦特-托勒-吉辛特,这使得事情变得简单多了。
发布于 2014-07-30 14:07:04
Grunt允许您根据任务名称和任务的任务注册任务。通过字符串字面任务名称数组很容易完成,例如:
grunt.registerTask('default', ['test']);
grunt.registerTask('lint', ['jshint', 'csslint']);如果您已经将jshint定义为jshint,那么grunt.initConfig应该已经注册了。请记住,对于节点程序来说,不寻常的是,一切都是高度同步的。这些任务将按照您给出的顺序运行。
编辑:如果你以后需要它,你也可以registerTask一个函数而不是一个任务名称数组。这就是如何编写一个执行异步工作的任务,或者如果您有非常严格的排序要求,可以使用控制流逻辑。如果可以的话,试着坚持只根据任务名称注册。
https://stackoverflow.com/questions/24897047
复制相似问题