使用Release Management和angular-cli

时间:2016-11-04 17:29:01

标签: angular continuous-integration azure-web-sites continuous-deployment angular-cli

我目前正在开发Angular2应用程序,并希望使用azure发布管理器配置持续集成和持续部署。

到目前为止我工作的东西:CI和CD到WebApp,home / site / wwwroot包含源文件(没有node_modules)。

不能正常工作:App无法启动。浏览到url会导致占位符(例如“正在加载...”)。在我的本地机器上,我会打电话给'npm install',然后'npm start',然后打电话给'tsc&&同时“tsc -w”“lite-server”'。根据我的理解,这适用于开发环境,但不应该用于生产。

我尝试过的事情:

  1. 在构建步骤中添加'npm install'会导致下载软件包的时间过长,以及大量软件包的长部署时间bc
  2. 添加'npm install --production'缩短了构建和部署时间,但在目标计算机上运行'npm start'失败,因为一些缺少的包(包含在DevDependencies中)
  3. 使用控制台在目标机器上执行'npm install'和'npm start'似乎有效,但无法实现自动化
  4. 所以问题是:

    1. 在Azure Web App上构建和部署Angular2应用程序的正确方法是什么?
    2. 如何处理node_modules?
    3. 提前谢谢。

      更新:当我切换到angular-cli时,现在情况越来越清晰了。在我的开发机器上,我使用“ng build”和“ng serve”在本地运行。对于部署,我使用“ng build -prod”并将创建的“dist”目录的内容部署到生产中。但是,这仍然是一种解决方法,因为我无法让构建代理执行这些步骤。我尝试将angular-cli引用移动到“Dependencies”,然后在代理上调用“npm install”和“ng build -prod”来获取“dist”文件夹。然后,我的部署配置会将dist文件夹的内容复制到Web应用程序。然后“ng build -prod”步骤失败

        

      'ng'未被识别为内部或外部命令

      我理解我无法在构建代理上安装和运行任何软件包,但我真的想使用angular-cli构建应用程序,因为它包含webpack。是否有可能按照描述使其正常工作?

1 个答案:

答案 0 :(得分:1)

您可以利用Custom Deployment Script For Azure Web Apps using Git Deployment来满足您的要求。

特别针对angular2,我们应该在package.json文件中进行一些修改,以使angular2成功部署到Azure Web Apps。

  1. devDependeccies部分中的所有依赖项模块移至dependencies部分。
  2. 使用"postinstall": "typings install && tsc"代替"postinstall": "typings install"
  3. 对于问题2,您不必将node_modules文件夹与项目一起推送。如果您在package.json的依赖项中声明了它,那么kudu将克隆您的项目并运行npm install –production以下载正确的内容。