背景
pkg 是一個打包工具,可以將 node 命令行工具打包成可執(zhí)行文件。
以下記錄了 pkg 的使用過程和注意事項。
使用方式
(1)node 版本
$ node --version
v10.21.0
(2)安裝 pkg
$ tnpm i -g pkg
$ pkg --version
4.4.9
(3)打包
$ pkg . -t node10-linux-x64 --options max_old_space_size=4096 -o ./release/main
參數(shù)說明:
(1). 打包當前目錄,會自動分析 node_modules 中的依賴,把依賴也打包
(2)-t node10-linux-x64 目標平臺為 linux 64
(3)--options max_old_space_size=4096 可執(zhí)行文件預(yù)分配的交換區(qū)空間
(4)-o ./release/main 打包結(jié)果文件路徑
首次打包會下載工具到 ~/.pkg-cache 中,
~/.pkg-cache
└── v2.6
├── fetched-v10.21.0-linux-x64 # 如果需要打包到這個平臺
└── fetched-v10.21.0-macos-x64
下載時間會比較長,可以手動到 pkg-fetch v2.6 release 對應(yīng) node 版本進行下載。
注:
(1)打包的 Node.js 應(yīng)用必須是一個命令行工具項目才行
(2)如果代碼中用到了 Node.js addon,這些 addon 必須手動拷貝到打包產(chǎn)物的同級目錄中才能使用。且必須考慮 addon 的平臺差異,mac 上安裝的 addon 無法在 linux 中使用。
(3)如果需要將額外的文件打包進去,需要配置 package.json 的 pkg.assets 字段,例如,
{
...,
"pkg": {
"assets": [
"node_modules/typescript/**/*"
]
}
}
會將 node_modules 中的 typescript 目錄也打包進去。