下面是使用 ncc 制作压缩 js 包的流程(注意:eggjs 压缩后会生成 7 个 js 文件,而不是 1 个)。
一、安装 ncc 依赖包
npm i -g @vercel/ncc
二、根目录新建 build-pkg.js 文件,可以在这里配置启动参数
'use strict'
console.log(`BaseURL: ${__dirname}`)
const egg = require('egg')
let workers = 1
let port = 8001 // 默认端口
// 启动命令中获取指定的参数
process.argv.forEach((val, index) => {
console.log(`${index}:${val}`)
if (val.indexOf('--port=') > -1) {
port = val.replace('--port=', '')
} else if (val.indexOf('--workers=') > -1) {
workers = val.replace('--workers=', '')
}
})
egg.startCluster({
env: 'prod',
workers,
port: port,
baseDir: __dirname
})
三、修改根目录的 package.json 文件
{
"name": "egg-client",
"version": "1.1.0",
"private": true,
"scripts": {
"start": "egg-scripts start --workers=1 --title=egg-client --port=8001 --env=prod",
"stop": "egg-scripts stop",
"ncc-linux": "ncc build build-pkg.js -o dist"
},
...
}
四、执行打包命令
# linux
npm run ncc-linux
五、启动、停止和注意事项
启动和停止命令和原来保持一致
npm run start
和npm run stop
除了 dist 目录生成的内容,还需要把 package.json 文件和 node_modules 目录拷贝到 dist 目录才能正常运行 ncc 只是单纯压缩打包 js,部署的时候 node 环境还需要自行安装