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