运行 "ember test" 没有全局安装 PhantomJS

Run "ember test" without PhantomJS installed globally

我有一个 Ember CLI 项目,我正在使用 Maven 构建它,我正在尝试弄清楚如何让 Maven 能够 运行 在没有事先假设拥有 PhantomJS 的情况下进行测试全局安装。我正在使用 frontend-maven-plugin 即时安装特定版本的 node 和 npm,调用 npm install、bower install 和 ember build;这一切都已经有效。我现在想做的也是调用 ember 测试,如果测试失败,则使 Maven 构建失败。目前,只要 "phantomjs" 在机器 运行 宁 maven 构建的路径中,它就可以工作;然而,许多开发人员使用此构建,他们不是 ember 开发人员,并且他们的路径中不会有 phantomjs。我也不想确保在我的 CI 服务器上全局安装 phantomjs。

有什么方法可以在 package.json 中将 PhantomJS 指定为依赖项并让 testem(ember 的默认测试 运行ner)在 [=18= 中选择安装]?我可以提供 PhantomJS 的路径以某种在文档中不明显的方式进行测试吗?或者,如果我想 运行 测试,我是否只需要忍受隐藏的手动依赖?

是的,你完全可以做到。

首先,安装 phantomjs-prebuilt 作为开发依赖项:

npm install --save-dev phantomjs-prebuilt

然后更改您的 package.json 脚本以在 运行 测试之前将项目本地 node_modules 添加到您的路径中:

    "scripts": {
      "build": "ember build",
      "start": "ember server",
      "test": "PATH=$PATH:./node_modules/.bin ember test"
    },

然后运行你的测试正常

npm install && bower install && npm test

这将启动您的项目本地版本的 phantomjs 以 运行 测试。