Astra 横空出世,真的是 JS 转 EXE 的未来吗?

360影视 动漫周边 2025-06-09 09:20 2

摘要:当然,如果借助于 upx 可以将文件大小压缩到约 30MB,其旨在编译服务器(express、fastify)或命令行界面(commander),因此并非 Electron 的替代品。

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

为什么选择 Astra

Astra 可能是 npm 上最好的编译器,平均 exe 文件大小约为 70-80MB(当然也取决于代码),比大多数编译器都轻量。

当然,如果借助于 upx 可以将文件大小压缩到约 30MB,其旨在编译服务器(express、fastify)或命令行界面(commander),因此并非 Electron 的替代品。

Astra 的典型特性包括:

编译 JavaScript/TypeScript 应用程序的新方法,使用的方法与 pkg 或 nexe 等其他编译器不同支持最新版本的 Node.jsAstra 由 esbuild 提供支持,可确保最快的编译速度支持编译基于 ESM 的应用程序,解决了 Node.js SEA 中的诸多限制Astra 借助 signale、inquirer 和 chalk 等工具,提供卓越的开发者体验生成独立的可执行文件,包含所有依赖项的单个 .exe 或二进制文件支持创建开发者自己的 exe 文件,例如:修改生成的可执行文件的元数据(图标、名称、版本等)面向未来 ,使用值得信赖且不断发展的工具构建

值得一提的是,Astra 目前只能编译 Windows 应用程序,macOS 和 Linux 系统目前还在积极支持中。

目前 Astra 通过 MIT 协议开源,短短几周已经有超过 0.5k 的 star,是一个值得关注的前端开源项目。

如何使用 Astra

开发者可以借助于 yarn 或者 npm 快速上手:

# npmnpm i -g astra-cli# yarn (classic)yarn global add astra-cli# pnpmpnpm add -g astra-cli# for one project only# npmnpm i --save-dev astra-cli# yarnyarn add --dev astra-cli# pnpmpnpm add -D astra-cli

接着使用下面命令编译 JavaScript/TypeScript 项目:

astra build src/index.js

开发者还可以通过 config 中的 assets 字段来隐藏二进制文件中的部分资源,例如:

// astra.config.jsexport default {assets: {"path/in/binary.txt": "path/to/asset.txt",},};

接着可以通过下面的方式访问 assets:

import {getAssetAsBlob, getAsset, isSea} from "node:sea";import fs from "fs";if (isSea) {// get asset as textconsole.log(getAsset("file.txt", "utf-8"));// orconsole.log(await getAssetAsBlob("file.txt").text);// get asset as blobconst arrayBuffer = await getAssetAsBlob("file.png").arrayBuffer;fs.writeFileSync("file.png", Buffer.from(arrayBuffer));});

astra.config.js 中的配置也非常丰富而且都支持修改,例如:

export default {outFile: "dist/app.exe",esbuild: {// esbuild 可选配置},modifyMetadata: true,// modify metadata of the executable (useful if you have macOS and don't have wine installed)exe: {companyName: "Your Company",// 公司名称productName: "Your App",// 产品名称fileDescription: "Your App Description",// app 描述productVersion: "1.0.0",// app 版本fileVersion: "1.0.0.0",// 文件版本icon: "path/to/icon.ico",// app 图标 iconcopyright: "Copyright © 2023 Your Company",// 版权},};参考资料

来源:小夏科技观察

相关推荐