pkg打包
为什么要使用pkg
今年有个项目,是用node开发一个自动化程序。为了便捷的服务器端运行,免除安装NODE环境等相关依赖,因此需要将node代码打包成可执行程序,直接在服务器端运行。
特点
将V8引擎和项目代码打包进一个可执行文件内;
即使在未安装Node.js的设备上(支持 macos / linux / win)也可以运行该可执行文件。
使用方式
在此,我就说一下我在项目中的应用和使用方式。
还是老套路,用npm安装:
npm i pkg -S
在package.json中,新增一个字段bin,指定应用程序的入口:
{
"name": "my_app",
...
"bin": "src/index.js",
...
}
然后执行命令行执行:
# --out-path 是指定打包输出的路径
# --targets 是指定打包哪种平台下运行的程序,我这里打包的是linux-x64下的程序,支持的参数值可以在官方仓库中查阅
pkg . --out-path=bin/ --targets=node10-linux-x64
打包完成后,会在bin目录下生成一个名为my_app
的二进制可执行程序,然后为程序设置可执行权限chmod +x my_app
,接下来便可在linux上直接运行 ./my_app
了.
注:如果你的程序是node10以下的项目,需要使用试验特性worker_threads,或者是其他v8配置,需要在运行打包的时候,设置node的runtime配置,例如:
pkg . --out-path=bin/ --targets=node10-linux-x64 --options experimental-worker
这样打包出来的程序在执行的时候,就相当于运行:
node my_app --experimental-worker
更多配置方式和FAQ,大家可以到zeit/pkg 官方仓库中查看。
Last updated
Was this helpful?