【Linux】环境下用pkg打包部署NodeJS执行文件
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.运行./可执行文件 ,验证程序运行正常。