拥抱全栈框架 Nuxt | 部署篇

3,209 阅读5分钟

前言

Nuxt 框架具有提供打包为多种形态的能力。

针对 Nuxt 不同的业务需求,决定着我们要把 Nuxt 打包为哪种形态。

打包为 SPA 页面,还是要具有良好 SEO 的具有服务端渲染的 SSR 页面,还是静态站点 SSG 页面,这些都是值得考量的,因为最终的打包形态决定着项目部署的方式和配置。

项目打包

打包为 SSR

直接在项目根目录执行 npm run build

截屏2024-06-23 14.58.30.png

最终的打包结果会生成一个 .output 文件夹。

截屏2024-06-23 15.00.29.png

打包完成后,可运行 npm run preview 预览打包之后的效果。

打包为 SPA

首先,在 nuxt.config.ts 配置文件中,设置 ssr 为 false

export default defineNuxtConfig({ 
  ssr: false
})

然后,在项目根目录执行 npm run generate

截屏2024-06-23 15.05.36.png

最终的打包结果同样会生成一个 .output 文件夹。

打包完成后,可运行 npm run preview 预览打包之后的效果。

打包为 SSG

直接在项目根目录执行 npm run generate

截屏2024-06-23 15.05.36.png

最终的打包结果同样会生成一个 .output 文件夹。

打包完成后,可运行 npm run preview 预览打包之后的效果。

项目部署

部署到 Node.js 服务器

因为 Nuxt 默认是服务端渲染,访问页面是需要用到实时渲染,因此需要启动服务来运行项目,直接运行打包完成后文件中的 .output/server/index.mjs 文件。

截屏2024-06-23 13.56.05.png

显然,项目成功在本地运行,然后在浏览器中输入 http://localhost:3000 就能看到实际的效果。

截屏2024-06-23 13.58.38.png

同时,在终端命令行执行 npm run preview 命令也能够在本地预览打包之后的效果。

使用 Node 部署

项目部署到服务器只需要复制 .output 文件到服务器指定文件夹,然后使用 Node 启动项目。

在部署的时候也可以指定端口号,例如,PORT 8888 node .output/server/index.mjs

使用 PM2 部署(推荐)

首先,在项目根目录执行 npx pm2 init simple 自动生成 ecosystem.config.js 文件。

然后,修改 ecosystem.config.js 的后缀为 .cjs 并打开 ecosystem.config.cjs 文件进行配置。

module.exports = {
  apps: [
    {
      name: 'nuxt-template',
      port: '8888',
      exec_mode: 'cluster',
      instances: 'max',
      script: './.output/server/index.mjs'
    }
  ]
}

最后,使用 pm2 命令启动项目,在根目录命令行输入 npx pm2 start ecosystem.config.cjs

截屏2024-06-23 14.38.14.png

使用 pm2 查看所有进程。

截屏2024-06-23 14.40.31.png

使用 pm2 停止所有进程。

截屏2024-06-23 14.40.42.png

部署到云服务商

Nuxt 官网提供以下三种主流的托管服务提供商,为我们提供多种部署 Nuxt 项目的方式。

11.png

使用 Vercel 部署

值得注意的是,因为 Vercel 的服务器是在国外,因此部署的项目在国内访问是受限制的,不太推荐使用这种方式。

默认使用 SSR 服务端渲染。

首先,要对 Nuxt 项目中的 nuxt.config.ts 文件进行配置,需要把其中的 nitro.preset 改为 vercel

export default defineNuxtConfig({
  nitro: {
    preset: 'vercel'
  }
})

值得注意的是,因为 Vercel 号称是零配置服务商,因此,这一步也可以省略掉。

然后,在 Vercel 官网进行登录,此时可以选择第三方登录 Github

22.png

其次,把我们需要部署的 Nuxt 项目发布至 Github。

截屏2024-06-23 01.53.51.png

接着,在 Vercel 官网中选择自己的 Github 账号之后,再选择要导入的 Github 项目。

截屏2024-06-23 01.55.17.png

最后,就是部署前的配置工作,Vercel 会自动识别项目使用的是哪种框架,并且是默认自带配置的,此时我们直接点击部署即可。

截屏2024-06-23 01.59.35.png

项目在部署的过程中,是可以看到实时运行日志的。

截屏2024-06-23 02.03.07.png

如果部署成功,会显示成功页面,包括项目的首页展示,以及域名配置等信息。

截屏2024-06-23 02.09.58.png

值得注意的是.vercel.app 是 Vercel 提供的免费子域名,这是因为每个在 Vercel 上部署的项目都会自动分配一个这样的子域名,便于开发者能够立即访问和测试项目。

与此同时,Vercel 也会自动处理 DNS 配置和证书管理,大大简化部署的过程,提高开发效率。

截屏2024-06-23 02.40.38.png

我们试着改一下默认的域名,直接使用官网帮我们配置的子域名 .vercel.app.vercel.app 之前是可以自定义的,例如就叫 festack-nuxt-template.vercel.app,配置完毕后保存。

接着访问 festack-nuxt-template.vercel.app,就能看到项目页面。

截屏2024-06-23 13.38.09.png

如果要发布新的版本,使用 Git 把代码提交至 Github 仓库时,Vercel 就会自动帮我们重新部署

截屏2024-06-23 02.26.08.png

使用 NuxtHub 部署

对于个人练习的项目,这种部署方式是值得推荐的,在国内的访问也还行,没有那么慢。

具体的部署方式参照 Nuxt 官网中所介绍的以及官方文档就行。

总结

关于 Nuxt 项目的打包与部署,是 Nuxt 框架中一个非常重要的环节,这决定你的项目是否能如期上线,并稳定运行而不出差错,因此,针对这一环节,我们要严谨且认真对待。