使用 pm2 的 Typescript 节点应用程序部署流程

Ofi*_*r G 5 deployment node.js typescript pm2 server

使用 pm2 我想部署一个用 typescript 编写的节点应用程序。
该应用程序的存储库位于 git 上,远程计算机与 git 建立了 ssh 连接。

在这种情况下,部署的标准工作流程是什么?

当然,在 git 存储库上只有源(未编译)代码,理想情况下只有编译后的代码(没有 .ts 文件)才会位于服务器上。

编译应该在什么阶段进行?哪里?

如果你们中的一些人遇到这种情况并得到一个实际的例子,具体的配置,这将是非常非常有帮助的

注意:
使用heroku,我只是添加一个"postinstall": "npm run build"脚本package.json并有一个带有类似命令的Procfile web: npm start,
出于某种原因,在这种情况下事情会更复杂。

此外,部署到 Ec2 Linux 实例,具有标准环境(节点、git、pm2 全局以及所有打字稿依赖项(如果需要)等)

N4p*_*peL 1

理想情况下,您使用 travis-CI 或 gitlab-CI 等构建服务器来构建、测试和部署您的源代码。
我最近问了一个类似的问题,最终构建了以下管道:

  • 构建阶段:
    • npm install安装node_modules*
    • 将打字稿编译到dist文件夹
  • 测试阶段:
    • linting(尽管有些人建议在构建之前这样做)
    • 其他代码检查
    • 单元测试
  • 部署:(仅在主分支上)
    • npm prune --production从中删除开发依赖项node_modules
    • 用于scp复制dist和node_modules生产服务器
    • 用于ssh从早期部署中删除文件并告诉 pm2 重新加载server.js

* 请注意,如果您使用的模块使用本机代码并因此在(node-gyp)上编译npm_install,则必须确保您的构建服务器使用与生产环境相同的架构