我已经通过CLI工具(v6.3.0)创建了一个基本应用程序,并且已经达到我准备推送到生产服务器并遇到问题的程度。
我使用Shipit部署(可能不相关),此过程的一部分是安装npm依赖项(使用标志--production
)。
一切都顺利部署,直到我的部署运行最终命令npm run start:prod
(在节点进程上启动Nest应用程序)。其中执行以下步骤:
rimraf dist && npm run build
的内容;tsc -p tsconfig.build.json
的内容;node dist/main.js
;所有这一切的问题是,我认为提供TypeScript
命令的tsc
包是devDependency而不是在使用--production
标志的npm安装期间安装的依赖项。
这是一个错误,还是我完全忽略了npm run start:prod
命令的要点。我感谢全局安装TypeScript包可能会解决问题,虽然我不确定这是出于意图还是假设?
如果将NestJS部署到生产环境中,您是否正在使用其他策略?
在服务器端应用程序中,dependencies
和devDependencies
之间的区别并不重要,因为您没有提供依赖项,因此应用程序的大小并不重要。
但是,当您部署到云时,您可能希望节省空间。编译后运行应用程序不需要TypeScript。当您只想重新启动应用程序时,无需重新编译应用程序。那么,你可以做什么呢?
删除prestart:prod
脚本。
部署例程:
npm install
安装所有依赖项npm run build
npm prune --production
修剪您的dev依赖项npm run start:prod
这几乎是我部署到heroku时发生的事情。
或者,您当然可以在typescript
而不是dependencies
下声明devDependencies
。