如何使用GRUNT和QUNIT为PhantomJS指定PATH?

时间:2012-11-01 11:33:08

标签: javascript path qunit phantomjs gruntjs

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

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

我怎样才能做到这一点?

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

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

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

提前致谢。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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,它将“包含path的路径字符串导出到phantomjs二进制/可执行文件。”。由于npm模块phantomjs是由grunt本地安装的,因此这似乎可以避免您担心设置PATH变量或安装phantomjs的冲突版本。

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

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