【问题标题】:Can't run 'ng' from VSTS agent无法从 VSTS 代理运行“ng”
【发布时间】:2018-02-12 12:17:13
【问题描述】:

我正在尝试使用我们托管的 VSTS 构建代理对我们的 AngularCLI 项目运行单元测试,但是当它尝试运行“ng test”时它一直遇到问题。

为了解决这个问题,我尝试通过提供工具的路径让代理直接使用 ng 工具。这不起作用,因为它似乎试图在工具所在的位置而不是在指定的当前工作目录中运行“ng test”:

我还尝试将它添加为 Windows 中的环境变量(我们使用 Windows Server 2012 来托管 VSTS 代理)并将 VSTS 代理中的工具设置为 ng 但是它没有出现正在寻找 ng 工具:

如何让 VSTS 代理使用 ng 工具运行测试?我们在托管代理的服务器上安装了@angular/cli。

【问题讨论】:

  • 在代理机上直接运行ng test命令会是什么结果?
  • 如果我们在本地运行它可以正常工作,但是我们是从机器上我们自己的用户帐户而不是 VSTS 代理运行的 NetworkService 帐户运行它

标签: build azure-devops angular-cli


【解决方案1】:

正如@Kuncevic 所述,要使用 Angular CLI 而不全局安装它,您需要使用 npm run 命令。

使用 Azure Devops 运行 Angular 构建:

  1. 添加npm 任务以安装依赖项(命令选择install
  2. 添加另一个npm 任务,但为命令选择custom。然后添加你的command and arguments:

run ng -- build --output-path=dist --configuration=prod

注意npm 不是command and arguments 的一部分,因为这将由任务提供。还要注意-- 如何区分要运行的命令和要传递给命令的参数。

【讨论】:

    【解决方案2】:

    问题是你不会在 VSTS 上全局安装 Angular cli,因为它的构建服务器不支持它。但好在你甚至不需要在你的代理上全局安装 cli。

    您所需要的只是npm run ng build -- prod - 这样它将始终运行本地版本。同样,这样您就根本不需要更新您的全局包。

    使用npm run ng test 运行测试,npm run ng e2e 运行量角器。如果您需要将更多参数传递给其中任何一个,请使用--

    【讨论】:

    • 感谢 Kuncevic,使用 npm 而不是 cmd 运行 ng 测试让它工作了 :)
    • 将 args 传递给 ng 的额外“--”是我需要的缺失位。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多