我正在尝试将我的cordova构建与grunt链接起来,我们在本地服务项目时运行的任务我想在Cordova构建期间重用。为此,我创建了一个简单的before_build钩子并将其放在hooks / before_build中。
我的构建钩子看起来像:
#!/usr/bin/env node
var grunt = require('grunt');
grunt.tasks(['build']);
process.exit(0);
构建的初始部分运行良好,所有文件都按预期复制。但是,在我的build
任务中,我进行了几个额外的调用,例如:
grunt.task.run('wiredep');
这个以及所有其他类似的调用在没有错误或警告的情况下无法执行。
为什么我无法调用额外的grunt任务?
我的所有任务都是使用loadNpmTask
或registerTask
在Gruntfile中定义的,这是不正确的配置吗?
答案 0 :(得分:0)
嗯...... grunt.task.run(...)
只是向Grunt的“队列”(排序)添加一个任务,它不会立即运行那个Grunt任务。我想您可能希望将build
任务实际设置为Gruntfile.js
中的默认任务:
grunt.registerTask('default', ['build']);
然后只使用bash脚本(与Node shell脚本对比):
#!/bin/bash
grunt
请注意,您需要先安装grunt-cli
:
~$ nmp install -g grunt-cli
答案 1 :(得分:0)
我收到了关于Grunt问题委员会的一些反馈意见:
https://github.com/gruntjs/grunt/issues/1265
每当我需要调用我的一个Grunt任务时,我会添加一个hook_task.sh文件,其中包含以下内容:
#!/bin/sh
grunt build
此适用于Windows / Linux / Mac ,没有任何问题。
我仍然想知道为什么节点方法不起作用。我觉得使用这种方法感觉更舒服,但这样做效果不错,所以没有抱怨。
(注意:我的Gruntfile.js位于我的Cordova应用程序的根目录中)