【问题标题】:Cordova Build Hooks + GruntCordova 构建 Hooks + Grunt
【发布时间】:2014-12-16 09:14:07
【问题描述】:

我正在尝试将我的 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 中定义,这是不正确的配置吗?

【问题讨论】:

    标签: node.js cordova gruntjs


    【解决方案1】:

    嗯...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
    

    【讨论】:

    • 你在现场,只是我什至不必覆盖默认任务。此外,请注意仅适用于 Windows 的 #!/bin/bash
    【解决方案2】:

    我收到了一些关于 Grunt 问题板的反馈:
    https://github.com/gruntjs/grunt/issues/1265

    每当我需要调用我的 Grunt 任务之一时,我都会添加一个带有以下内容的 hook_task.sh 文件:

    #!/bin/sh
    grunt build
    

    适用于 Windows/Linux/Mac 没有任何问题。

    我仍然想知道为什么节点方法不起作用。我的一部分感觉使用这种方法更舒服,但这种方法效果很好,所以没有抱怨。

    (注意:我的 Gruntfile.js 位于我的 Cordova 应用程序的根目录中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-02
      • 2016-06-18
      • 2020-07-11
      • 2015-03-17
      • 2014-05-12
      • 1970-01-01
      • 2014-04-14
      • 2018-09-08
      相关资源
      最近更新 更多