pm2部署nuxt
复制所需文件到服务器
打包:
npm run build
(执行的:nuxt build)
一般包含:
.nuxt
、static
、env.js(环境配置,没有则忽略)
、nuxt.config.js
、package.json
、package-lock.json(锁定依赖包版本号)
、ecosystem.config.js(pm2配置文件)
安装依赖:
npm i
-->node_modules
注意
npx nuxt
跑起来的是development(开发)
模式.
npx nuxt start
跑起来的是product(生产)
模式.
WARNING
如果先nuxt build
后,再跑development
模式,会把构建好的.nuxt/dist
目录干掉。要跑生产模式需要重新构建一次!!!
方案一:npm脚本
js
// -- start 表示会把'start'这个参数传递给./node_modules/nuxt/bin/nuxt.js这个脚本。对应ecosystem.config.js中args字段配置
// --name为项目名称
"script": {
"start": "pm2 start ./node_modules/nuxt/bin/nuxt.js --name \"project-xxx\" -- start",
}
方案二:配置文件
js
// package.json
"scripts": {
// ecosystem.config.js可不指定
// 使用不同命令部署不同环境(--env) 【运行时可以不配置环境变量,使用系统的环境变量】
"uat": "pm2 start ecosystem.config.js --env uat",
"prod": "pm2 start ecosystem.config.js --env prod"
}
js
// ecosystem.config.js
module.exports = {
apps: [
{
name: 'project-xxx',
exec_mode: 'cluster', // instances为1时同fork
instances: '1',
script: './node_modules/nuxt/bin/nuxt.js',
// args为拼接上面的script的命令行参数
args: 'start', // 重要===生产模式(注释掉这行启动后为development模式;注意有坑,看下面【坑】!!!)===
max_memory_restart: '1024M',
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志格式, 路径: cd ~/.pm2/logs
env: {
NODE_ENV: 'production' // process.env.NODE_ENV
},
// uat后缀对应package.json中script中的--env参数
env_uat: {
CUR_ENV: 'uat' // process.env.CUR_ENV
},
// prod后缀对应package.json中script中的--env参数
env_prod: {
CUR_ENV: 'prod' // process.env.CUR_ENV
}
}
]
}
// 环境配置参考:https://www.cnblogs.com/mmzuo-798/p/11139352.html
pm2部署nuxt优缺点
优点
- 简单易用, 对前端开发人员友好
- 支持热重启、负载均衡、自带监控、内存控制等
缺点
每次部署nuxt服务, 从git拉取代码后需要重新安装依赖与打包, 较为繁琐。
pm2守护npm指令
TIP
例如守护npm指令:npm run prod
pm2命令:pm2 start npm --name "chatgpt-web" -- run prod
【这里的prod为package.json中的script指令】