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

如何使用Node SEA将node_modules打包为可执行文件?

Node.js SEA 打包 node_modules 的正确方法

SEA 的assets配置仅支持单个文件,无法直接指向整个文件夹,所以你直接把node_modules作为 asset 项的配置是无效的。要打包依赖模块,可参考以下两种方法:

方法一:依赖自动打包(推荐)

SEA 本身会自动分析入口文件中通过require或import引入的依赖,并将其打包进sea-prep.blob文件,无需手动配置assets。

比如你的hello.js中引入了依赖:

const lodash = require('lodash');
console.log(lodash.join(['Hello', 'SEA'], ' '));

执行生成 SEA blob 的命令时,Node.js 会自动将 lodash 这类被直接引用的依赖打包进去,不需要额外配置。

方法二:手动指定动态加载的依赖(特殊场景)

如果存在动态加载的依赖(无法被自动分析到),可以在assets中通过通配符(Node.js 20+ 支持)指定需要打包的文件:

{
  "main": "hello.js",
  "output": "sea-prep.blob",
  "assets": {
    "node_modules/lodash/**/*": "./node_modules/lodash/**/*"
  }
}

这种方式仅适用于特殊场景,优先推荐方法一。

额外注意事项

  • 确保使用 Node.js 19.0.0+ 版本(SEA 正式支持的最低版本),建议选用 20+ LTS 版本以获得更完善的功能。
  • 生成 SEA 的完整流程:
    1. 编写配置文件(如sea-config.json)
    2. 生成 blob 文件:node --experimental-sea-config sea-config.json
    3. 复制 Node.js 可执行文件:cp $(command -v node) hello-sea(Windows 系统使用copy命令)
    4. 注入 blob 到可执行文件:npx postject hello-sea NODE_SEA_BLOB sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:15:59