← 返回博客列表

Nuxt3打包构建

Nuxt2026-05-19

把 Nuxt 的服务端产物做成“可直接运行”的 Node 应用,尽量不依赖外部 node_modules。

export default defineNuxtConfig({
  //...exits code
 nitro: {
    preset: 'node-server',
    externals: {
      // 把运行时依赖内联到 server bundle,部署机无需 npm install
      inline: [/.*/]
    }
  },
  
})
  • preset: 'node-server' 是什么
    • 这是 Nitro 的构建目标(preset):
      • 产出标准 Node.js 服务端程序
      • 适合自建服务器、Windows/Linux 直接跑进程
  • externals.inline: [/.*/] 是什么
    • Nitro 默认会把很多第三方依赖“外置”(external),运行时再从 node_modules 加载。这里写 inline: [/.*/](匹配所有包),等于告诉构建器:
      • 尽量把所有运行时依赖都打进 server bundle
      • 部署时通常只需拷贝 .output,不再 npm install
  • 优点
    • 部署简单:产物即应用,拷贝即跑
    • 环境一致:减少“线上缺包/版本漂移”问题
    • 刷新 SSR 路由更稳:不会因为外部依赖缺失而 ERR_MODULE_NOT_FOUND
  • 代价与注意点
    • 构建体积可能更大,构建时间可能更长
    • 个别包(尤其原生模块、动态 require 特殊写法)可能仍有边缘问题
    • 并非“绝对 100% 单文件化”,但对常规前端依赖很有效