[Node] 将 node 命令行工具打包成可执行文件

背景

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 目录也打包进去。


参考

https://github.com/vercel/pkg

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容