背景
pkg 是一个打包工具,可以将 node 命令行工具打包成可执行文件。
以下记录了 pkg 的使用过程和注意事项。
使用方式
(1)node 版本
$ node --version
v10.21.0
(2)安装 pkg
$ tnpm i -g pkg
$ pkg --version
4.4.9
(3)打包
$ pkg . -t node10-linux-x64 --options max_old_space_size=4096 -o ./release/main
参数说明:
(1).
打包当前目录,会自动分析 node_modules 中的依赖,把依赖也打包
(2)-t node10-linux-x64
目标平台为 linux 64
(3)--options max_old_space_size=4096
可执行文件预分配的交换区空间
(4)-o ./release/main
打包结果文件路径
首次打包会下载工具到 ~/.pkg-cache
中,
~/.pkg-cache
└── v2.6
├── fetched-v10.21.0-linux-x64 # 如果需要打包到这个平台
└── fetched-v10.21.0-macos-x64
下载时间会比较长,可以手动到 pkg-fetch v2.6 release 对应 node 版本进行下载。
注:
(1)打包的 Node.js 应用必须是一个命令行工具项目才行
(2)如果代码中用到了 Node.js addon,这些 addon 必须手动拷贝到打包产物的同级目录中才能使用。且必须考虑 addon 的平台差异,mac 上安装的 addon 无法在 linux 中使用。
(3)如果需要将额外的文件打包进去,需要配置 package.json 的 pkg.assets
字段,例如,
{
...,
"pkg": {
"assets": [
"node_modules/typescript/**/*"
]
}
}
会将 node_modules 中的 typescript 目录也打包进去。
网友评论