Cordova Build Hooks + Grunt

时间:2014-12-15 06:35:01

标签: node.js cordova gruntjs

我正在尝试将我的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任务?

我的所有任务都是使用loadNpmTaskregisterTask在Gruntfile中定义的,这是不正确的配置吗?

2 个答案:

答案 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应用程序的根目录中)