nuxt3 多环境配置及部署
准备
一个云服务 1c1g 就行
多环境配置文件
nuxt3 支持 .env 文件配置多个环境,需要手动指定文件猛击查看官网。
设置环境变量
在 nuxt.config.ts 文件中设置
export default defineNuxtConfig({
runtimeConfig: {
// 只能在服务端使用
apiSecret: '123',
// public 下的变量可以在客户端和服务端使用
public: {
apiBase: ''
}
}
});
创建 env 文件
默认加载 .env 文件的配置

.env 文件内容
NUXT_PUBLIC_API_BASE=http://127.0.0.1:53105/mk
.env.production 文件内容
NUXT_PUBLIC_API_BASE=https://vaebe.top:53104/mk
也许你发现了 NUXT_PUBLIC_API_BASE 这个变量, 看下上边的 设置环境变量 就会发现其实就是把对象字段 key 进行拼接。
所以 API_BASE 对应的就是 runtimeConfig\public 配置里的 apiBase 这个字段,.env 文件的变量应该与 runtimeConfig 配置的内容相同。
如果不在 public 下那就应该是 NUXT_API_BASE=xxxxxxx
获取环境变量
export default async () => {
// 使用 useRuntimeConfig 获取配置全局函数无需导入
const config = useRuntimeConfig()
// 获取定义的 apiBase 变量
config.public.apiBase
}
打包
在 package.json 中写入如下内容
"scripts": {
"generate": "nuxt generate",
"generate:pro": "nuxt generate --dotenv .env.production",
}
generate 命令会与渲染每个路由并把结构存储在纯 HTML 中。
然后执行对应环境的命令进行打包会生成一个 dist 文件但其实指向的是 .output\public 目录,所以应该部署 .output\public 目录而不是 dist 目录。
生成后的文件大概是下图这样

prerender
prerender: {
crawlLinks: true
}

部署
压缩 .output 后上传服务器的部署目录,假设压缩为 .zip 文件、部署目录是 opt\web。
执行 unzip .output.zip 解压缩(若没有 unzip 命令,执行 yum install zip unzip 安装)
配置 nginx
找到对应的配置目录作者的是 /usr/local/nginx/conf
打开 nginx.conf 文件在 http 内增加 server 配置内容如下
server {
listen 80;
server_name localhost;
location / {
# nuxt generate 文件存放的目录
root /opt/web/.output/public;
index index.html;
try_files $uri $uri/ /index.html;
}
}
配置https 访问
server {
listen 80;
#请填写绑定证书的域名
server_name vaebe.top;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
#请填写绑定证书的域名
server_name vaebe.top;
#请填写证书文件的相对路径或绝对路径
ssl_certificate ./vaebe.top_nginx/vaebe.top_bundle.pem;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key ./vaebe.top_nginx/vaebe.top.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /opt/web/.output/public;
index index.html;
try_files $uri $uri/ /index.html;
}
}
总结
文章主要介绍了 nuxt3 中多环境的打包及部署,在 nuxt3 中使用不同的 env 文件可以实现不同环境的打包。文章最后还介绍了使用Nginx 部署打包后的文件及配置 https 访问。
往期文章
转载自:https://juejin.cn/post/7267437885858463756