#nodejs #javascript #bundler #binaries #single-file

构建 jundler

Node.js 项目的 JavaScript 可执行打包工具

7 个版本

0.2.5 2024年7月7日
0.2.4 2024年7月7日
0.2.1 2024年6月26日
0.1.0 2024年6月25日

#47 in 构建工具

45 每月下载量

MIT 许可证

105KB
2K SLoC

License Crates.io Crates.io Downloads (recent) CircleCI

Jundler

Node.js 项目的 JavaScript 可执行打包工具。

Jundler 是一个将您的 Node.js 项目打包成单个可执行文件的工具。它使用新的 单可执行应用 API 来打包您的项目,这样您就可以在任何平台上运行,无需安装 Node.js 或任何依赖项。

为什么选择 Jundler?

Jundler 与其他可执行打包工具(如 pkgboxednodejs2bin)不同,它使用最新的 单可执行应用 API。而且,与其他打包工具不同,Jundler 是用 Rust 编写的,这使得它更快更高效!

更多功能请见 常见问题解答

要求

  • 已安装的 npmnpx。注意,您不需要安装 node,因为 Jundler 将下载与您的操作系统、架构和所需版本匹配的本地副本。
  • 使用 cargocrates.io 安装。

用法

Jundler 将自动将您的 JavaScript 文件打包成单个独立文件。您需要在项目根目录中提供一个 sea-config.json 文件和通用的 package.json 文件。

要使用 Jundler,只需在终端中运行以下命令

jundler <path-to-nodejs-project>

运行 jundler --help 获取有关如何使用 Jundler 的更多信息。

常见问题解答

等等!有什么东西坏了!我该怎么办?

由于 Jundler 和 单可执行应用 API 都是新的,并且变化很快,因此某些东西可能会在夜间崩溃。如果出现问题,请在 Jundler GitHub 仓库 上提交问题,我会尽力回答您。

运行捆绑的可执行文件时出现导入错误。我该怎么办?

这是Single Executable Application API的一个已知问题,因为它不支持importrequire。Jundler会自动通过使用ESBuild捆绑你的项目来修复这个问题,它会自动将所有的import语句转换为require语句。如果你仍然遇到问题,请在本Jundler GitHub仓库上提交一个issue。

[!NOTE] 要手动告诉Jundler捆绑你的项目,请使用--bundle/-b标志。

 jundler <path-to-nodejs-project> --bundle

Jundler支持TypeScript吗?

是的。Jundler会自动检测TypeScript,ESBuild会完成其余的工作!

[!NOTE] 如果Jundler与你的TypeScript项目有问题,请尝试运行jundler <path-to-nodejs-project> --bundle来手动捆绑你的项目。

我的项目出现了一些与node-gyp相关的奇怪错误。发生了什么?

这是Single Executable Application API的一个已知问题。Jundler目前无法为你解决这个问题,因为这涉及到以这种方式打包二进制文件,使得依赖的API可以像在原始Node.js上安装一样使用它。如果你在node-gypnode-pre-gyp方面遇到问题,请在本Jundler GitHub仓库上提交一个issue。

Jundler支持交叉编译吗?

是的!只需分别使用-o-a标志指定你想要构建的操作系统和架构。

Jundler支持macOS的代码签名吗?

是的,只要你自己在macOS机器上。Jundler会自动为你签名可执行文件,无需任何额外的输入!

[!WARNING] 如果你在一个不同的平台上为macOS构建,二进制文件必须手动在macOS机器上签名。Jundler应该会给你一个警告。

Jundler支持Windows的代码签名吗?

目前还不支持,但鉴于Windows不需要代码签名来运行二进制文件(它只会给出警告),现在应该没问题。所有Windows二进制文件在构建后必须在Windows机器上手动签名。

为什么叫“Jundler”?

因为它听起来很有趣,我很喜欢。 :p

TODO

  • 自动检测TS/模块并相应捆绑
  • 单元测试独立的构建步骤
  • 自动下载Node.js主机运行时,使过程无需安装Node.js即可工作(仍需要安装npm/npx
  • 交叉编译
  • macOS的代码签名
  • 重新设计CLI + 允许清理缓存目录。
  • 单元测试ESBuild集成
  • 旋转器/进度条 + 更好的UI
  • Windows的代码签名
  • 更好的错误处理
  • 在测试项目中执行集成测试

依赖项

~15-29MB
~473K SLoC