1

Grunt 使用 PhantomJS 以一种非常有趣的方式运行无头 QUnit 测试(如果我错了,请纠正我)。由于我刚刚开始尝试使用这些工具,因此我并不完全了解它,也不知道如何配置或扩展它。

我设法让我的机器上的所有工作,但我不想使用$PATH 系统变量。相反,我想通过我可以轻松更改并移植到其他环境的设置来提供 PhantomJS 的可执行文件的路径。

我怎样才能做到这一点?

我想有很多方法,我认为Grunt 的 Qunit Task可能有一个简单的答案。理想情况下,只需在grun.js文件中定义路径,如下所示:

qunit: {
      phantomjsPath: 'path/to/phantomjs',
      files: ['test/**/*.html']
    },

我的环境是 MacOSX,但我接受任何类型的环境(如 Windows)的解决方案 - 我的构建服务器。

提前致谢。

更新我使用的 Grunt 版本是v0.3.17。下一个大版本v0.4.x有很多变化,有些不向后兼容。

4

2 回答 2

2

好吧,我认为您最终迁移到了 Grunt 0.4。并且可能你得到了 grunt-contrib-qunit 插件,用于在 PhantomJS 下运行 qunit 测试。不幸的是,您会遇到同样的问题 - 无法提供 phantomjs 可执行文件的路径。这是因为 grunt-contrib-qunit/grunt-contrib-phantomjs 使用phantomjsnpm 模块,该模块在安装时下载 PhantomJS,并在其 js 代码中硬编码可执行文件的路径。如果您遇到此类问题,请查看我的博客文章

于 2013-09-24T12:21:23.317 回答
1

不幸的是,grunt 0.3.x 没有内置选项来指定 phantomjs 的路径——它只是phantomjs直接在命令行上执行。看看这个辅助函数:

https://github.com/gruntjs/grunt/blob/master/tasks/qunit.js#L231

在尚未发布的 grunt-0.4 中,情况似乎发生了变化,但是:

https://github.com/gruntjs/grunt-lib-phantomjs/blob/master/lib/phantomjs.js#L22

如您所见,下一个版本的 grunt 使用 npm 模块phantomjs,它“将包含pathphantomjs 二进制/可执行文件的路径字符串导出。”。由于 npm 模块phantomjs是由 grunt 在本地安装的,因此这似乎可以避免您担心设置PATH变量或安装冲突版本的phantomjs.

无论如何,如果你愿意生活在最前沿,我会考虑看看grunt-0.4 。

否则,您始终可以分叉qunit任务并修改grunt-qunit任务以查看您的自定义配置变量。

于 2012-11-01T20:28:14.053 回答