下面是使用 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 環境還需要自行安裝