【问题标题】:Angular CLI VSO Continuous IntegrationAngular CLI VSO 持续集成
【发布时间】:2017-01-12 14:35:17
【问题描述】:

我过去为使用 npm 命令的 Angular2 项目设置了 CI,但是我最近开始使用 Angular-CLI,它改用“ng”命令。

当我尝试在 Visual Studio Online 中为我的项目设置 CI 时,我找不到执行“ng”命令的方法。

我尝试运行 NPM 命令(使用目录中的 npm 任务)来安装 CLI; npm install -g angular-cli,然后我运行 npm install。现在要运行“ng build”,我尝试使用命令行工具运行(因为似乎没有允许我运行 ng 命令的工具),但是无法说明 ng 不是可识别的命令。

关于使用 VSO 为 Angular-CLI 项目设置 CI 的任何建议?

谢谢

【问题讨论】:

    标签: continuous-integration azure-devops angular-cli


    【解决方案1】:

    如果您希望构建定义在任何构建代理(托管代理和任何本地代理)上运行,您可以依赖 angular-clinpm 的本地安装em>,没有 -g 标志:

    >npm install angular-cli
    

    npm 默认会在.\node_modules\.bin\下安装'ng'

    您的构建定义可以使用'npm install' 任务在本地安装'ng',然后您可以通过'Command Line' 任务调用它,因为您知道它的路径(例如$(Build.SourcesDirectory)\node_modules\.bin) .

    创建一个新项目并使用 'ng' 构建它的构建定义示例:

    • 在本地安装 'ng' cli 工具:

    • 创建项目“helloworldproject”:

    • 构建项目“helloworldproject”:

    ==更新(使用 'npm bin' 以编程方式检索实际二进制路径)==

    要消除放置二进制文件的假设并具有更具弹性的构建定义,您可以使用以下命令以编程方式检索 npm 使用的实际二进制路径:

    >npm bin
    

    以下示例(这次是一个简短的 PowerShell 脚本)展示了如何创建“helloworldproject”并在之后构建它:

    记住:

    • 禁用 PowerShell 任务上的“标准错误失败”选项,因为 ng 工具喜欢在其中写入内容,即使它成功。
    • 当然,在使用 'ng' 工具之前,您仍然需要如上所示的 'npm install' 任务。

    【讨论】:

      【解决方案2】:

      我目前正在经历同样的事情,所以感觉你很痛苦。 您可能必须在 Azure 或本地创建自己的构建服务器作为 VM。原因是 angular-cli 目前不是托管构建服务器的功能之一。

      当您自己创建时,您仍然会遇到一些障碍。当您全局安装 angular-cli 时,它仍然将它放在您安装它的用户的 AppData 文件夹下。如果您已将代理设置为以其他用户身份运行,例如 NetworkService,那么该服务帐户的“ng”将不会出现在路径中。它也可能没有运行它的权限,因为 angular-cli 已安装在它没有权限的用户文件夹下。

      好的,因此您使用同一用户运行代理,或者您解决了权限和路径问题,您可能仍然会遇到问题。如果您使用 powershell 脚本任务作为构建任务之一来执行“ng build”,那么您将遇到我在此处强调的问题:

      https://github.com/angular/angular-cli/issues/3979

      所以看起来我们可能不得不求助于命令行构建任务。 希望这可以帮助。我在这方面花费的最后两天也可以帮助其他人。

      【讨论】:

        【解决方案3】:

        关于 Angular2-CLI 命令行,它使用 ng2 而不是 ng。 (Angular-CLI 使用 ng),所以你的命令不正确。

        请参考这些步骤来验证 ng2 命令(适用于托管代理):

        1. 添加 NPM 构建步骤(npm 命令:安装;参数:angular2-cli -g)
        2. 添加命令行步骤(工具:ng2;参数:--version)

        如果您使用带有网络服务的本地构建代理,请改用以下步骤:

        1. NPM 构建步骤(npm 命令:安装;参数:angular2-cli -g)
        2. 命令行步骤(工具:C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\npm\ng2.cmd;参数:--version)

        对于使用用户帐户的本地构建代理,您可以登录该机器并安装 Angular2-CLI 命令行(无需在构建期间安装)。

        【讨论】:

        • 那是我的错误,我的意思是 angular-cli。我已调整 CI 以安装正确的 cli,但它仍然说 ng 不是可识别的命令
        • 如果您将它作为构建的一部分进行安装,并且您没有像 starain-MSFT 建议的那样直接引用该命令,那么它将无法找到它,因为该命令正在运行的上下文将还没来得及在路上认出它。
        • @Pawel 您使用了哪个构建代理?托管构建代理还是本地构建代理?详细的构建日志是什么?
        • @starain-MSFT 现在没关系,我设法用卢卡的回答解决了这个问题。无论如何感谢您的支持:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 2013-01-07
        相关资源
        最近更新 更多