使用 node/express/mongo 应用程序和打字稿进行持续部署
continuous deployment with node/express/mongo app and typescript
据我目前所见,nodejs 应用程序的部署要么通过创建一个完全静态的包(例如 angular),要么通过从 repo 中提取源代码并 运行ning npm install
和 npm start
(通常在使用 express/mongo 时看到)。
但是,我正在开发一个 express/mongo 与打字稿配对的应用程序,从回购中提取需要在生产服务器上(再次)构建打字稿,这很丑陋,还需要打字稿和所有 @types/*
包作为生产依赖项。所以我想知道:最佳做法是什么?构建和捆绑所有必要的 (.js) 文件并将它们与 package.json 一起推送到服务器是个好主意,这样我仍然可以 运行 npm install
吗? 什么是更好的方法?
你是对的,你不想在生产服务器上编译打字稿。通常,您希望在投入生产之前处理所有构建和依赖项管理。这意味着创建一个构建管道,输出一个用于部署的独立应用程序。
典型的构建管道可能如下所示:
npm install
→lint
→build
→bundle *.js and node_modules
→deploy
像这样的设置将安装依赖项、linting 和构建管道隔离开来。只有 *.js
个文件、一个已安装的 node_modules
目录和 package.json
(如果它包含启动脚本)实际得到部署。
构建管道可以手动完成,方法是运行构建脚本并将输出复制到生产服务器。然而,更好的方法是使用众多可用的构建自动化解决方案之一,例如 Jenkins、Travis CI 或 GitLab CI.
据我目前所见,nodejs 应用程序的部署要么通过创建一个完全静态的包(例如 angular),要么通过从 repo 中提取源代码并 运行ning npm install
和 npm start
(通常在使用 express/mongo 时看到)。
但是,我正在开发一个 express/mongo 与打字稿配对的应用程序,从回购中提取需要在生产服务器上(再次)构建打字稿,这很丑陋,还需要打字稿和所有 @types/*
包作为生产依赖项。所以我想知道:最佳做法是什么?构建和捆绑所有必要的 (.js) 文件并将它们与 package.json 一起推送到服务器是个好主意,这样我仍然可以 运行 npm install
吗? 什么是更好的方法?
你是对的,你不想在生产服务器上编译打字稿。通常,您希望在投入生产之前处理所有构建和依赖项管理。这意味着创建一个构建管道,输出一个用于部署的独立应用程序。
典型的构建管道可能如下所示:
npm install
→lint
→build
→bundle *.js and node_modules
→deploy
像这样的设置将安装依赖项、linting 和构建管道隔离开来。只有 *.js
个文件、一个已安装的 node_modules
目录和 package.json
(如果它包含启动脚本)实际得到部署。
构建管道可以手动完成,方法是运行构建脚本并将输出复制到生产服务器。然而,更好的方法是使用众多可用的构建自动化解决方案之一,例如 Jenkins、Travis CI 或 GitLab CI.