我过去为Angular2项目设置了使用npm命令的CI,但是我最近开始使用Angular-CLI,它使用了'ng'命令。
当我尝试在Visual Studio Online中为我的项目设置CI时,我找不到执行'ng'命令的方法。
我尝试过运行NPM命令(使用目录中的npm任务)来安装CLI; npm install -g angular-cli,之后运行npm install。现在运行'ng build'我试图使用命令行工具运行(因为似乎没有允许我运行ng命令的工具),但是没有说ng不是可识别的命令。< / p>
有关使用VSO为Angular-CLI项目设置CI的任何建议吗?
由于
答案 0 :(得分:12)
如果您希望您的构建定义在任何构建代理(托管代理和任何内部代理)上运行,您可以依赖本地安装的 angular-cli npm ,没有 -g
标志:
>npm install angular-cli
默认情况下,npm会在.\node_modules\.bin\
下安装&#39;
您的构建定义可以使用'npm install'任务在本地安装&#39; ,然后您可以通过'Command Line'任务调用它,因为您知道它的路径(例如$(Build.SourcesDirectory)\node_modules\.bin
)。
创建新项目并使用&#39; 构建新项目的构建定义示例:
==更新(以编程方式检索实际二进制路径&#39; npm bin&#39;)==
要删除放置二进制文件并具有更具弹性的构建定义的假设,您可以使用以下命令以编程方式检索 npm 使用的实际二进制路径:
>npm bin
以下示例(这次是简短的PowerShell脚本)展示了如何创建&#39; helloworldproject&#39;然后建立它:
记住:
答案 1 :(得分:2)
我目前正在经历同样的事情,所以感到痛苦。 您可能必须创建自己的构建服务器,无论是作为Azure上的VM还是内部部署。原因是angular-cli不是目前托管构建服务器的功能之一。
当你创建自己的时候,你仍然会遇到一些障碍。当您在全局安装angular-cli时,它仍将它放在AppData文件夹下,供您安装它的用户使用。如果您已将代理设置为以不同的用户身份运行,例如NetworkService,那么对于该服务帐户,“ng”将不在路径中。它可能也没有权限运行它,因为angular-cli已经安装在用户的文件夹下,而且没有权限。
好的,所以你用同一个用户运行代理,或者你解决了权限和路径问题,你可能仍会遇到问题。如果您使用powershell脚本任务作为执行“ng build”的构建任务之一,那么您将遇到我在此处突出显示的问题:
https://github.com/angular/angular-cli/issues/3979
因此看起来我们可能不得不求助于命令行构建任务。 希望这可以帮助。我花在这上面的最后两天也可以帮助其他人。
答案 2 :(得分:0)
关于Angular2-CLI命令行,它使用ng2而不是ng。 (Angular-CLI使用ng),因此您的命令不正确。
请参阅以下步骤以验证ng2命令(适用于托管代理):
如果您正在使用具有网络服务的内部部署构建代理,请改为使用以下步骤:
对于具有用户帐户的内部部署构建代理,您可以登录该计算机并安装Angular2-CLI命令行(在构建期间不需要安装它)。