You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在package.json中用Node.js最新原生单可执行功能替代pkg?

改用Node.js原生单可执行文件的配置方案

Node.js 20及以上版本支持原生单可执行文件(SEA)功能,替代pkg工具的话,按以下步骤配置:

1. 创建SEA配置文件

在项目根目录新建sea-config.json,内容如下:

{
  "main": "./build/main.js",
  "output": "./sea-prep.blob"
}

2. 安装依赖工具

需要postject来注入二进制blob,执行安装命令:

npm install postject --save-dev

3. 配置package.json的编译脚本

替换原来的compile脚本,新增以下内容:

"scripts": {
  "prepare-sea": "node --experimental-sea-config sea-config.json",
  "compile-linux": "cp $(command -v node) release/server && npx postject release/server NODE_SEA_BLOB ./sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2",
  "compile-macos": "cp $(command -v node) release/server && npx postject release/server NODE_SEA_BLOB ./sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2",
  "compile-windows": "copy \"%ProgramFiles%\\nodejs\\node.exe\" release\\server.exe && npx postject release\\server.exe NODE_SEA_BLOB ./sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2",
  "compile": "npm run prepare-sea && npm run compile-$(shell uname | tr '[:upper:]' '[:lower:]')"
}

脚本说明

  • prepare-sea:通过Node.js的实验性SEA配置,生成包含应用代码的二进制blob文件
  • compile-linux/compile-macos/compile-windows:复制当前系统的Node可执行文件,再用postject将blob注入,生成最终的单可执行文件
  • compile:Linux/macOS下可直接执行,自动匹配系统编译命令;Windows需单独执行npm run compile-windows

注意事项

  • 确保使用Node.js 20+版本(推荐22),SEA功能在高版本中兼容性更好
  • Windows系统的Node可执行文件路径需根据实际安装位置调整
  • SEA目前仍为实验性功能,若项目依赖特殊Node.js API,需提前测试兼容性

内容的提问来源于stack exchange,提问作者Gorilka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:25:01