0

我写了一个 grunt 插件。在我用誓言编写的测试中,我想在调用之前更改我的 gruntfile 中定义的一些配置对象

grunt.tasks(["my_task"], {}, function(){
    // do something}
)

目标是使用不同的配置多次执行我在 gruntfile 中定义的一些任务。

我不能使用经典的 nodeunit 方法,因为我要更改的配置不是我的任务的配置。另外,我在 nodeunit 启动 grunt 任务时遇到了一些问题。

我有这样的事情:

grunt.initConfig({
    object_I_want_to_alter:{...},
    the_task_I_call:{...}
})

似乎没有真正的解决方案可以从 API 中驱动 grunt,因为它是一个命令行工具。尽管如此,还是有两种 API 方法可以提供帮助:grunt.util.spawn 和 grunt.tasks

两者似乎都是在调用时读取 gruntfile 的黑匣子。

如果我尝试第一次调用 grunt.tasks() 来预加载配置,我可以更改我的对象,但第二次调用 grunt.tasks() 似乎完全重新加载了 gruntfile 并且不使用以前的配置。

有人对实现该目标的这种或其他方式有一些见解吗?

谢谢。

4

1 回答 1

0

好的,找到了解决方案。

一个笨拙的提交者的这个答案在我脑海中有一段时间,但我现在才真正理解它。

实际上,如果您删除 gruntfile 并首先使用 hack 完成测试中的所有操作,那么您可以随心所欲地使用您的配置。

感谢凯尔·罗宾逊·杨提供的信息。

不过,如果在 grunt 网站上有更多关于此的情报,那就太好了。

于 2014-07-14T11:18:17.017 回答