网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
为什么选择 Astra
Astra 可能是 npm 上最好的编译器,平均 exe 文件大小约为 70-80MB(当然也取决于代码),比大多数编译器都轻量。
当然,如果借助于 upx 可以将文件大小压缩到约 30MB,其旨在编译服务器(express、fastify)或命令行界面(commander),因此并非 Electron 的替代品。
Astra 的典型特性包括:
- 编译 JavaScript/TypeScript 应用程序的新方法,使用的方法与 pkg 或 nexe 等其他编译器不同
- 支持最新版本的 Node.js
- Astra 由 esbuild 提供支持,可确保最快的编译速度
- 支持编译基于 ESM 的应用程序,解决了 Node.js SEA 中的诸多限制
- Astra 借助 signale、inquirer 和 chalk 等工具,提供卓越的开发者体验
- 生成独立的可执行文件,包含所有依赖项的单个 .exe 或二进制文件
- 支持创建开发者自己的 exe 文件,例如:修改生成的可执行文件的元数据(图标、名称、版本等)
- 面向未来 ,使用值得信赖且不断发展的工具构建
值得一提的是,Astra 目前只能编译 Windows 应用程序,macOS 和 Linux 系统目前还在积极支持中。
目前 Astra 通过 MIT 协议开源,短短几周已经有超过 0.5k 的 star,是一个值得关注的前端开源项目。
如何使用 Astra
开发者可以借助于 yarn 或者 npm 快速上手:
# npm
npm i -g astra-cli
# yarn (classic)
yarn global add astra-cli
# pnpm
pnpm add -g astra-cli
# for one project only
# npm
npm i --save-dev astra-cli
# yarn
yarn add --dev astra-cli
# pnpm
pnpm add -D astra-cli
接着使用下面命令编译 JavaScript/TypeScript 项目:
astra build src/index.js
开发者还可以通过 config 中的 assets 字段来隐藏二进制文件中的部分资源,例如:
// astra.config.js
export 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 text
console.log(getAsset("file.txt", "utf-8"));
// or
console.log(await getAssetAsBlob("file.txt").text());
// get asset as blob
const 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 图标 icon
copyright: "Copyright (c) 2023 Your Company",
// 版权
},
};
参考资料
https://github.com/astracompiler/cli
https://astra-js.netlify.app/cli/configuration/
猜你喜欢
- 2025-09-23 Github开源即时通讯(IM)项目,可实现聊天、语音通话等
- 2025-09-23 万字长文帮你彻底搞懂JS中的Promise
- 2025-09-23 JS中 call()、apply()、bind() 的用法
- 2025-09-23 JS 克隆对象八种技术,为何少不了 StructuredClone?
- 2025-09-23 为什么 JS 开发者更喜欢 Axios 而不是 Fetch?
- 2025-09-23 JS 高手进阶:玩转七种继承艺术_js继承是什么意思
- 2025-09-23 JS 打造「放大镜 + 缩略图」一体组件
- 2025-09-23 JS 打造丝滑手风琴_web手风琴
- 2024-12-18 比较 JavaScript 对象的四种方式「实践」
- 2024-12-18 我不知道还可以用 JS 做的 6 件事
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)