如何通知grunt中运行的每个任务?

时间:2013-06-15 07:25:46

标签: javascript gruntjs

我在一个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个目标,但因为它是电话空白,我明天可能有7个。

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

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

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

任何帮助表示赞赏。 谢谢。 最好的问候。

1 个答案:

答案 0 :(得分:-1)

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

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

例如,就我而言:

grunt sass

将被拦截并由

取代
grunt sass:web