如何构建并部署纯JavaScript版本的NestJS应用
纯JavaScript版NestJS生产环境部署方案
核心思路
放弃babel-node直接启动的方式,先将所有JS代码编译为Node.js原生支持的版本,输出到dist目录后,再用node直接运行编译后的文件。
步骤1:安装Babel构建依赖
安装生产构建必需的Babel工具:
npm install --save-dev @babel/cli @babel/core @babel/preset-env
如果代码用到ES模块或高级语法,可额外安装运行时插件(需同时安装生产依赖):
npm install @babel/runtime npm install --save-dev @babel/plugin-transform-runtime
步骤2:配置Babel编译规则
在项目根目录创建babel.config.json文件,写入基础编译配置:
{ "presets": [ [ "@babel/preset-env", { "targets": { "node": "current" } } ] ], // 若安装了transform-runtime,添加此插件 "plugins": ["@babel/plugin-transform-runtime"] }
步骤3:修改package.json脚本
添加build编译命令,同时新增start:prod用于生产环境启动:
"scripts": { "format": "prettier --write \"**/*.js\"", "start": "babel-node index.js", "start:dev": "nodemon", "start:prod": "node dist/index.js", // 对应你的项目入口文件名 "build": "babel src --out-dir dist", // 假设业务代码在src目录,入口为src/index.js "test": "jest", "test:cov": "jest --coverage", "test:e2e": "jest --config ./test/jest-e2e.json" }
如果入口文件在项目根目录(如根目录的index.js),修改build命令如下,排除无需编译的目录:
"build": "babel . --out-dir dist --ignore node_modules,dist,test"
步骤4:处理静态资源(可选)
若项目包含静态文件(如public、assets目录),需将其复制到dist目录。先安装copyfiles工具:
npm install --save-dev copyfiles
然后在scripts中添加复制命令,或整合到build流程:
"scripts": { // ...其他命令 "build": "babel src --out-dir dist && copyfiles -u 1 src/**/*.{html,css,png} dist" }
-u 1表示移除源路径的第一层目录(如src/public/index.html会转为dist/public/index.html)。
步骤5:构建并启动生产环境
执行编译命令:
npm run build
编译完成后,启动生产服务:
npm run start:prod
注意事项
- 确保应用内的模块导入均使用相对路径,避免编译后出现路径错误。
- 若使用
.env配置文件,需保证生产环境中dist目录能访问到该文件,或直接将其放在项目根目录(Node会自动读取)。 - 建议在
.gitignore中添加dist目录,避免提交编译产物到Git仓库。
内容的提问来源于stack exchange,提问作者Parag Pawar
相关产品推荐
相关产品推荐

