[Node] 將 node 命令行工具打包成可執(zhí)行文件

背景

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 目錄也打包進去。


參考

https://github.com/vercel/pkg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容