自动部署Angular应用程序的正确方法是什么?(角度Cli、express、数字海洋液滴)

自动部署Angular应用程序的正确方法是什么?(角度Cli、express、数字海洋液滴),angular,express,deployment,angular-cli,dev-to-production,Angular,Express,Deployment,Angular Cli,Dev To Production,我正在用Angular Cli开发Angular应用程序。还将express app用作后端服务器。 我在带有Ubuntu 16.04的DigitalOcean droplet上有一个BitBucket存储库和一个生产服务器 因此,我的项目文件夹结构非常简单: - src - angular app sources - server - express app 因此,当我进行生产构建时,Angular Cli会将所有文件编译到server/public文件夹(我已将Angular Cli.js

我正在用Angular Cli开发Angular应用程序。还将express app用作后端服务器。 我在带有Ubuntu 16.04的DigitalOcean droplet上有一个BitBucket存储库和一个生产服务器 因此,我的项目文件夹结构非常简单:

- src - angular app sources
- server - express app
因此,当我进行生产构建时,Angular Cli会将所有文件编译到
server/public
文件夹(我已将Angular Cli.json中的默认
dist
替换为outDir)

我在这里看到了将我的应用部署到生产服务器的两种方法:

1) 只需将整个项目推送到BitBucket上的远程存储库 (不包括
服务器/公共
——否则这不是最佳做法, 是吗?),然后在我的droplet上克隆它,安装所有依赖项, 创建生产构建并通过pm2运行

2) 在本地计算机上创建生产构建,然后复制
server
文件夹到droplet,仅安装生产依赖项 需要快速应用程序,并通过pm2运行

我想通过创建一些脚本或其他东西使这个过程变得简单和自动化

是的,我知道这两种方法都是可能的,但由于我是开发SPA的新手,我没有任何经验,可能看不到这两种方法隐藏的优点和缺点

就目前而言,我认为第二个更为正确,因为在我的生产服务器上不会有任何额外的文件、安装的依赖项和进程,而只是应用程序工作所需的文件、依赖项和进程。但是我还没有找到任何关于这种方法的教程


最佳做法是什么?

正确的做法是:视情况而定。正确的方法取决于您的设置/堆栈。您描述的方法可以工作,但无论如何都不是自动的,因为您仍然在手动将文件复制到您的droplet

更好的方法是使用自动化工具,如或。例如,我使用Travis进行个人站点自动部署。可以找到我的文件

它所做的是:

  • 执行测试npm脚本
  • 缓存
    节点\u模块
    ,以加快构建时间
  • 如果提交是标记的提交,则执行部署步骤。
    • 在部署之前,它为生产构建项目
现在我使用,因为我的个人网站只是一个静态的网站,建立与。您需要协调您的步骤,以封装重新部署到您的液滴、重新启动pm2以及成功部署所需的任何其他过程