npm i pkg-fetch -g
因為項目原因,需要將NodeJS項目用pkg打包成一個可執行文件,在Linux arm64環境下獨立運行。如何在linux下安裝nodejs、npm、換源、安裝pkg等前置操作我就不細說了,網上相關的文章很多,但是基本上都是介紹如何將項目打包成可以在win下執行的exe可執行文件,對於如何在Linux下進行打包的介紹比較少,因此這些着重記錄一下如何下Linux環境下通過pkg將Nodejs項目打包成可執行文件。
准備工作:如何想打包Linux可執行文件,必須在linux環境下打包,在win環境下打包會報錯:Not able to build for 'linux' here, onlyu for 'win'。也就是說linux可執行文件需要在linux環境下打包,win文件需要在win環境下打包。
因此我自備了一台linux設備,不過我的Linux環境是linux-arm64國產麒麟操作系統,x86還是arm64差別不大。
在linux下打包的命令和win下打包的命令差不多:
pkg -t node14-linux-arm64 ./ --out-path=dist
在執行打包命令時,會非常坑爹地發現pkg打包用的node二進制文件無法下載,因為是從github上下載,經常會因為網速或是其它原因導致下載超時。
經過一番搜索后發現,這個node二進制文件是通過pkg-fetch下載的,為了避免自動下載超時,我們可以手動預先從pkg-fetch下載node二進制文件。
1.通過以下提示可得知pkg對應的pkg-fetch版本
2.執行pkg-fetch安裝命令
npm i pkg-fetch -g
3.執行完后,在linux的/home/kylin/.pkg-cache文件夾下新建v3.2文件夾。
4.從pkg-fetch官網上手動下載對應node二進制文件。
地址:https://github.com/vercel/pkg-fetch/releases
注意:下載的版本必須與pkg打包命令中的版本一致
pkg -t node14-linux-arm64 ./ --out-path=dist
5.將二進制文件手動放到/home/kylin/.pkg-cache/v3.2下
6.重新執行pkg命令,就會在dist下生成一個可執行文件。
7.運行./可執行文件 ,驗證程序運行正常。