文章总结: 本文记录使用Bun打包JS可执行文件的实战经验。重点解决二进制依赖库在虚拟文件系统中加载失败的问题,通过打补丁用require替换bindings实现兼容。此外,分享了多平台交叉构建配置及利用tar压缩包嵌入非代码资源的技巧,为解决分发痛点提供了有效参考。 综合评分: 93 文章分类: 安全开发,安全工具,实战经验,逆向分析
因为我要打包一个 webui 进去,而前端用的构建工具并不是 bun。
这就导致我需要编写一个脚本遍历整个文件夹,针对每一个文件生成一个 import 语句。
官网确实给了一个打包目录的示例:
https://bun.com/docs/bundler/executables#embed-directories
但同样地,在引用具体文件的时候只能专门用一条 import 语句指定相对路径。而 import 函数还不能用动态的字符串,因为打包的过程需要确定 import 的路径,否则会导致缺失对应的资源文件。更无语的是别忘了 bun 本身就是一个 js 打包器。按照官网给的示例把 .js 路径传进去,bun 不会原样打包,而是会尝试将这个 js 作为一个入口点进行代码分析,对于前端工具已经生成好的生产代码自然报错满天飞。
所以如果我要打包一整个 assets 文件夹然后调用 serveStatic……不行。
折衷的方案就是用构建脚本把前端目录打成 tar 压缩包,这样只需要 import 一个确定的文件名,然后在主程序初始化过程动态解压出来。Node 的 SEA 似乎也没有简单处理这种场景的办法,而那边甚至没有内置的 tar 解压支持。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:非尝咸鱼贩 0xcc 0xcc《Bun 打包独立可执行文件的一些坑》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论