直接从节点运行Grunt任务
Running a Grunt Task directly from Node
如何直接从Node执行Grunt任务而无需向CLI执行?
我有以下"POC"代码;但是,"stuff"永远不会被记录。
var grunt = require('grunt');
grunt.registerTask('default', 'Log some stuff.', function() {
console.log('stuff');
});
grunt.task.run('default'); // This is probably not the right command
我对格兰特很陌生,所以我可能错过了一些显而易见的东西。我怀疑我用来"运行"任务的命令只是在排队,实际上并没有开始运行。不过,我找不到手动运行的文档。
更新
虽然这是答案,但Grunt在直接从Node运行时有很多问题。尤其是当grunt任务失败时,它会调用process.exit
并很好地退出节点实例。我不建议尝试让它发挥作用。
好的,我只回答我自己的问题。我是对的,我的命令是错的。
更新代码:
var grunt = require('grunt');
grunt.registerTask('default', 'Log some stuff.', function() {
console.log('stuff');
});
grunt.tasks(['default']);
这需要很多时间,最后,我已经让它为我的工作了
var util = require('util')
var exec = require('child_process').exec;
var child = exec("/usr/local/bin/grunt --gruntfile /path/to/Gruntfile.js", function (error, stdout, stderr) {
util.print('stdout: ' + stdout);
util.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
如果执行以下操作会怎样?
grunt.tasks("default");
我在我的一个项目中创建了一个Grunt runner,它进行一些解析,然后调用上面的行。虽然你已经回答了,但支持Gruntfile.js
。
我们使用Jenkins进行构建。以下是我们使用bash:解决问题的方法
#!/bin/bash
export PATH=$PATH:/usr/local/bin
grunt full-build | tee /dev/stderr | awk '/Aborted/ || /Fatal/{exit 1}'
echo rv: $?
exit $?
使用/dev/stderr是因为我们在Jenkins中运行,并且我们仍然希望输出显示在控制台中。
Visualjeff
相关文章:
- 如何为requirejs和qunit设置grunt任务
- 不使用Grunt.initConfig()注册Grunt任务
- Grunt任务没有加载,获得无限循环
- 通过Grunt任务注入内容,具体取决于asp.net项目构建配置
- 从另一个grunt文件加载grunt任务
- Grunt任务退出,总线错误:10
- 无法创建Jasmine并发Grunt任务
- 如何在 Grunt 任务中保持服务器侦听运行
- 在另一个任务之前异步运行 grunt 任务
- 通过函数填充 Grunt 任务配置的“文件”属性
- 在 Grunt 任务中运行命令
- 创建自定义的 Grunt 任务来处理文件
- 如何在我的 Yeoman 生成器完成安装后运行 Grunt 任务
- 注册代码位于外部 JavaScript 文件中的 Grunt 任务
- 如何理解Grunt任务选项
- 使用https下载文件的Grunt任务
- 验证来自grunt任务的http响应
- 找不到Grunt任务
- 如何创建和组织配置和注册grunt任务
- Grunt任务依赖关系