0

我在 phonegap 应用程序中使用 grunt。在构建我的 webapp 时,我正在为 android、ios 和 web 移动平台生成。所以每次我声明一个任务,一般我有3个目标,每个平台一个。

我想在启动时更改一些 grunt 任务配置。因此,我希望每次运行任务时都能收到通知。

例如,我经常有这样的事情:

sass: { // some task
    options: {
        // some options
    },
    android: {
        // android configuration
    },
    ios: {
        // ios configuration
    },
    web: {
        // web configuration
    }
}

在我的 grunt 文件中,我有一个部分可以声明每个目标的状态(活动/非活动),以便我只能构建一个、两个或三个目标。我不想每次都构建所有东西。

因此,例如在使用 grunt 命令构建时,我不想手动指定每个目标。我想检测活动的并只构建那些。在使用 grunt-contrib-watch 之类的插件并声明任务执行时,我无法提前声明每个目标。现在我有 3 个目标,但由于是 phonegap,我明天可能有 7 个。

是否有任何 API 或任何未记录的事件我可以使用以便在每次运行之前得到通知并动态修改运行范围?

我只看到一个具有实际 grunt 状态的解决方案: - 创建我自己的插件(例如 n),它将作为任务执行的包装器:

grunt n:sass will generate grunt sass:ios sass:web if these two targets are actives

任何帮助表示赞赏。谢谢。最好的祝福。

4

1 回答 1

-1

终于找到了更好的解决方案。

我没有创建任务包装器,而是使用 grunt.util.hooker API 来挂钩 grunt.task.run 方法。现在我可以拦截电话并将其替换为我的电话。

例如,在我的情况下:

grunt sass

将被拦截并替换为

grunt sass:web
于 2013-06-16T19:45:03.027 回答