在不使用Docker的情况下部署TypeScript Node.js应用程序到生产环境

8

如何在没有使用Docker的情况下,在生产中部署TypeScript Node.js应用的最佳实践是什么?

如果使用git,则存在一个问题,即需要安装所有依赖项才能构建项目,因为通常安装为devDependencies的类型是必需的。这也意味着您安装了用于测试、linting等的模块,这些在生产中根本不需要。

我考虑将所有类型都添加为依赖项,这将允许运行npm install --production以避免安装所有devDependencies,并仍然能够通过运行npm run build来构建项目。

我还考虑过通过npm部署,类似于TypeScript node模块的发布和安装方式,但这种解决方案也似乎不太理想。

1个回答

4
为什么要添加所有类型的依赖项?这是没有必要的,你的生产应用程序不应该包含所有的开发依赖项。通常,在运行npm run build命令时,会执行tsc(typescript编译器),将typescript代码转换为javascript。您不需要将所有开发依赖项包含在转换后的代码中。转换后的代码的默认位置通常是dist文件夹。如果您的应用程序入口点是src/index.ts,则在构建命令之后,您应该调用node dist/index.js来运行服务器。现在,您打包应用程序所需的一切就是您的package.json和位于dist文件夹中的转换后的代码。安装生产依赖项并运行node dist/index.js,您的服务器应该成功运行。当然,您应该考虑为您的生产代码配置PM2或类似的进程管理器。

1
我同意你所说的一切,但是你使用什么工具来打包应用程序(dist文件夹+package.json),然后将其部署到服务器上?目标是能够自动化整个过程。当然,使用Docker很容易实现,但我正在尝试找到一种不需要Docker的解决方案。 - nflaig
1
我正在使用AzureDevops。它非常直观和易于使用。选择要在生产服务器上打包的文件和文件夹非常容易。 - pavle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接