使用pkg對egg項目進行打包
- 前言
- 一、pkg是什麼?
- 二、使用步驟(win&linux)
-
- 1.公共部分
- 2.windows
- 3.linux
- 總結
前言
項目部署,沒做之前以為很簡單,不就跟vue一樣build一下就行麼,然而并不是這樣的,在第一次對egg項目打包使用了各種方法,也都無果,最後還是使用了egg官網的項目部署,上傳伺服器之後解壓完,還是能看見源代碼,這就讓有些人說,你不能把源代碼給放在伺服器上啊,我也想啊,于是抽出時間對pkg打包進行了一些時間的研究,有所小成,何為小成,小成也,運作之成功,通路之成功,請求之成功也……
一、pkg是什麼?
pkg在這裡是協助打包的工具,更多請看pkg.
二、使用步驟(win&linux)
由于伺服器的node版本是12的,是以打包就選擇了12的版本
1.公共部分
config/config.default.js檔案下
const process = require('process'), path = require('path');//這句放在外面
config.static = {
prefix: '/public',
dir: process.cwd() + '/public',
};
config.rundir = process.cwd() + '/run';
config.logger = {
dir: path.join(process.cwd(), 'logs', '/'),
outputJSON: false,
};
build.js檔案(自己建立)
'use strict';
const egg = require('egg');
const workers = Number(process.argv[2] || require('os').cpus().length);
egg.startCluster({
workers,
baseDir: __dirname,
});
package.json檔案
"scripts": {
"build": "pkg . --targets node12-win-x64 --out-path ./mydist --debug",//加上這句
...
},
"pkg": {
"scripts": [
"./app/**/*.js",
"./config/*.js",
"./config/*",
"./app.js",
"./node_modules/nanoid/**/*.js",
"./node_modules/nanoid/**/*.cjs"
],
"assets": [],
"targets": [
"node12-win-x64"
]
},
"bin": "build.js",
2.windows
1.由上面的公共部分可以看出node-12後面是win的,在運作npm run build 之前,先安裝一下pkg,指令是npm i -g pkg
2.到打包的目錄下,可以直接在vscode中進入終端運作,本人是在資源管理中打開再cmd,兩者指令輸入的指令相同,
名稱.exe,回車就會運作,
3.可能遇到的問題,就是運作報pkg或者報node的錯誤,這個問題可是困擾了兩三天,由于我的egg版本是4,改為3就可以了。
3.linux
1.把公共部分中的win改為linux,再次打包.
2.運作指令為 ./名稱 start
3.可能遇到的問題,在伺服器啟了,但是通路不到,可以試試把config/config.default.js檔案下的hostname改為0.0.0.0如下:
config.cluster = {
listen: {
path: '',
port: 端口号,
hostname: '0.0.0.0'
}
}
總結
寫了這麼多也該有個總結,以上就是本期的内容,隻是簡單的使用了下pkg,如何打包成win和linux的,以及運作之後所出現問題的介紹,如您有更好的辦法,歡迎評論加點贊,我們一同學習……