You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建并部署纯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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:55:40