我正在生成使用 NESTJS 框架制作的 API 的生产版本,并且想知道应该将哪些文件上传到服务器。当我运行“npm run start: prod”编译时,它会生成“dist”文件夹,但我尝试仅使用它运行,但这还不足以运行我的应用程序。我需要将所有文件上传到服务器吗?我做了几次测试,删除了我在开发过程中使用的文件夹,但只有在我在开发模式下都一样的情况下才能在生产模式下运行。
我在文档中查找了有关此的内容,但一无所获。有谁能够帮我?
谢谢
原文由 Marcos Lopes 发布,翻译遵循 CC BY-SA 4.0 许可协议
老实说,您应该只需要 dist 文件夹,因为那是 JS“编译”文件。要运行您的应用程序,通常您会使用此命令
node dist/main.js
。至于你上传什么文件,这取决于你。就我个人而言,我使用了很多持续集成,所以我只是克隆到我的容器/服务器中并使用yarn start:prod
。因此,每次部署时,我都会生成在生产环境中运行所需的文件。就像@Kim Kern 提到的那样,一些节点模块是使用节点陀螺仪本地构建的;所以最好在部署时在服务器/容器上构建你的 node_modules。您的部署脚本应如下所示
上面的脚本应该
2)检查节点版本
安装 node_modules 并构建原生脚本等
构建生产分布
5)运行生产JS脚本
如果您查看 package.json 文件,您会注意到使用
yarn start
、yarn start:dev
和yarn start:prod
时运行的不同脚本。在开发时,您会注意到ts-node
的使用,这是一个打字稿节点运行器类型的东西(不记得正确的短语)。此外start:dev
脚本使用节点模式重新启动ts-node
脚本。 You’ll also see thestart:prod
script usesnode dist/main.js
and that theprestart:prod
script runsrm -rf dist && tsc
which removes the dist folder and ‘compiles’生产环境所需的 javascript。但是,没有持续集成的服务器上的 typescript 应用程序的缺点是可能会出现 typescript 编译错误,在运行 prod 脚本之前您不会看到或知道这些错误。我建议在进行部署之前设置一个程序来从 typescript 编译 javascipt,因为您不想在知道下一个版本将构建和运行之前删除当前的 dist 构建!