前言
Nuxt 框架具有提供打包为多种形态的能力。
针对 Nuxt 不同的业务需求,决定着我们要把 Nuxt 打包为哪种形态。
打包为 SPA 页面,还是要具有良好 SEO 的具有服务端渲染的 SSR 页面,还是静态站点 SSG 页面,这些都是值得考量的,因为最终的打包形态决定着项目部署的方式和配置。
项目打包
打包为 SSR
直接在项目根目录执行 npm run build
。
最终的打包结果会生成一个 .output
文件夹。
打包完成后,可运行 npm run preview
预览打包之后的效果。
打包为 SPA
首先,在 nuxt.config.ts
配置文件中,设置 ssr 为 false
。
export default defineNuxtConfig({
ssr: false
})
然后,在项目根目录执行 npm run generate
。
最终的打包结果同样会生成一个 .output
文件夹。
打包完成后,可运行 npm run preview
预览打包之后的效果。
打包为 SSG
直接在项目根目录执行 npm run generate
。
最终的打包结果同样会生成一个 .output
文件夹。
打包完成后,可运行 npm run preview
预览打包之后的效果。
项目部署
部署到 Node.js 服务器
因为 Nuxt 默认是服务端渲染,访问页面是需要用到实时渲染,因此需要启动服务来运行项目,直接运行打包完成后文件中的 .output/server/index.mjs
文件。
显然,项目成功在本地运行,然后在浏览器中输入 http://localhost:3000 就能看到实际的效果。
同时,在终端命令行执行 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
。
使用 pm2 查看所有进程。
使用 pm2 停止所有进程。
部署到云服务商
Nuxt 官网提供以下三种主流的托管服务提供商,为我们提供多种部署 Nuxt 项目的方式。
使用 Vercel 部署
值得注意的是,因为 Vercel 的服务器是在国外,因此部署的项目在国内访问是受限制的,不太推荐使用这种方式。
默认使用 SSR 服务端渲染。
首先,要对 Nuxt 项目中的 nuxt.config.ts
文件进行配置,需要把其中的 nitro.preset
改为 vercel
。
export default defineNuxtConfig({
nitro: {
preset: 'vercel'
}
})
值得注意的是,因为 Vercel 号称是零配置服务商,因此,这一步也可以省略掉。
然后,在 Vercel 官网进行登录,此时可以选择第三方登录 Github。
其次,把我们需要部署的 Nuxt 项目发布至 Github。
接着,在 Vercel 官网中选择自己的 Github 账号之后,再选择要导入的 Github 项目。
最后,就是部署前的配置工作,Vercel 会自动识别项目使用的是哪种框架,并且是默认自带配置的,此时我们直接点击部署即可。
项目在部署的过程中,是可以看到实时运行日志的。
如果部署成功,会显示成功页面,包括项目的首页展示,以及域名配置等信息。
值得注意的是,.vercel.app
是 Vercel 提供的免费子域名,这是因为每个在 Vercel 上部署的项目都会自动分配一个这样的子域名,便于开发者能够立即访问和测试项目。
与此同时,Vercel 也会自动处理 DNS 配置和证书管理,大大简化部署的过程,提高开发效率。
我们试着改一下默认的域名,直接使用官网帮我们配置的子域名 .vercel.app
,.vercel.app
之前是可以自定义的,例如就叫 festack-nuxt-template.vercel.app
,配置完毕后保存。
接着访问 festack-nuxt-template.vercel.app,就能看到项目页面。
如果要发布新的版本,使用 Git 把代码提交至 Github 仓库时,Vercel 就会自动帮我们重新部署。
使用 NuxtHub 部署
对于个人练习的项目,这种部署方式是值得推荐的,在国内的访问也还行,没有那么慢。
具体的部署方式参照 Nuxt 官网中所介绍的以及官方文档就行。
总结
关于 Nuxt 项目的打包与部署,是 Nuxt 框架中一个非常重要的环节,这决定你的项目是否能如期上线,并稳定运行而不出差错,因此,针对这一环节,我们要严谨且认真对待。