使用 node/express/mongo 应用程序和打字稿进行持续部署

continuous deployment with node/express/mongo app and typescript

据我目前所见,nodejs 应用程序的部署要么通过创建一个完全静态的包(例如 angular),要么通过从 repo 中提取源代码并 运行ning npm installnpm start(通常在使用 express/mongo 时看到)。

但是,我正在开发一个 express/mongo 与打字稿配对的应用程序,从回购中提取需要在生产服务器上(再次)构建打字稿,这很丑陋,还需要打字稿和所有 @types/* 包作为生产依赖项。所以我想知道:最佳做法是什么?构建和捆绑所有必要的 (.js) 文件并将它们与 package.json 一起推送到服务器是个好主意,这样我仍然可以 运行 npm install 吗? 什么是更好的方法

你是对的,你不想在生产服务器上编译打字稿。通常,您希望在投入生产之前处理所有构建和依赖项管理。这意味着创建一个构建管道,输出一个用于部署的独立应用程序。

典型的构建管道可能如下所示:

npm installlintbuildbundle *.js and node_modulesdeploy

像这样的设置将安装依赖项、linting 和构建管道隔离开来。只有 *.js 个文件、一个已安装的 node_modules 目录和 package.json(如果它包含启动脚本)实际得到部署。

构建管道可以手动完成,方法是运行构建脚本并将输出复制到生产服务器。然而,更好的方法是使用众多可用的构建自动化解决方案之一,例如 Jenkins、Travis CI 或 GitLab CI.