我在一个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
任何帮助表示赞赏。 谢谢。 最好的问候。
答案 0 :(得分:-1)
最终找到了更好的解决方案。
我没有创建任务包装器,而是使用grunt.util.hooker API来挂钩grunt.task.run方法。 现在我可以拦截电话并将其替换为我的电话。
例如,就我而言:
grunt sass
将被拦截并由
取代grunt sass:web