nodejs pkg打包exe
pkg -t win xxx.js
前提要下载对应的node二进制到pkg的cache目录,本来会自己下载的但是墙了。
C:\Users\Administrator\.pkg-cache\v3.4\fetched-v18.5.0-win-x64
下载的是node-v18.5.0-win-x64,改名,版本和当前node基本一致即可。
++++++++++++++++++++++
虽然可以通过编辑package.json文件实现更多选项,但是大多数nodejs程序只有一个入口,因此推荐使用命令行直接编译打包。
命令行
进入到项目根目录,以入口脚本为app.js为例:
pkg -o app -t node14-linux-x64 app.js
-o 参数 输出的可执行程序名称
-t 目标平台类型,这里是输出到linux平台
首次使用会出现下载基础包时间过长的问题,如:
> Targets not specified. Assuming:
node14-linux-x64, node14-macos-x64, node14-win-x64
> Fetching base Node.js binaries to PKG_CACHE_PATH
fetched-v14.4.0-linux-x64 [ ] 0%
这种情况下可以手动下载,进入页面手动下载对应的基础包:https://github.com/vercel/pkg-fetch/releases
然后拷贝到全局目录PKG_CACHE_PATH 内,PKG_CACHE_PATH 可以通过设置系统变量来设置:
export PKG_CACHE_PATH=/usr/local/node/pkg_cache_path
运行完毕后把这行命令建议放到 /etc/profile文件尾部实现长久生效。
运行过 pkg命令后,PKG_CACHE_PATH 目录下有个以版本号命名的目录,将刚才下载的文件重命名为所需文件拷贝到这个目录即可。例如上面命令提示的文件名是 fetched-v14.4.0-linux-x64 ,则拷贝时重命名为该名称。
再次运行pkg命令就不会下载了,打包速度很快!