根据官方说法,Bun 0.6.0 版本是迄今为止 Bun 最大的一个更新版本。
最新版本的 Bun 现在有一个内置的 JavaScript 和 TypeScript 捆绑器和简化器,可以用它来捆绑前端应用程序或将你的代码捆绑成一个独立的可执行文件。
Bun 0.6.0 也一直在忙着提高性能和修复 bug:writeFile()
在 Linux 上的速度提高了 20%、对Node.js 兼容性和 Web API 兼容性进行了大量的 bug 修复、支持 TypeScript 5.0 语法,并对bun install
进行了各种修复。
新的 JavaScript bundler & minifier
这个版本的重点是 Bun 的新 JavaScript Bundler(捆绑器),但捆绑器只是一个更大项目的开始。在接下来的几个月里,Bun 将发布Bun.App
—— 一个 "超级 API",将 Bun 的 native-speed 捆绑器、HTTP 服务器和文件系统路由缝合成一个整体。
可以使用bun build
CLI 命令或新的Bun.build()
JavaScript API 来使用。
JavaScript
Bun.build({
entrypoints: ["./src/index.tsx"],
outdir: "./build",
minify: true,
// ...
});
CLI
bun build ./src/index.tsx --outdir ./build --minify
独立的可执行文件
现在你可以用bun build
来创建独立的可执行文件。
bun build --compile ./foo.ts
这让你可以将你的应用程序作为一个可执行文件发布,而不需要用户安装 Bun。
你也可以将其缩小,以提高大型应用程序的启动性能:
bun build --minify --compile ./three.ts
[32ms]minify-123 KB (estimate)
[50ms]bundle456 modules
[107ms] compilethree
这是由 Bun 的新 JavaScript 捆绑器和简化器提供的。
import.meta.main
现在你可以使用import.meta.main
来检查当前文件是否是启动 Bun 的入口点。这对 CLI 很有用,可以确定当前文件是否是启动应用程序的。
例如,如果你有一个名为index.ts
的文件:
index.ts
console.log(import.meta.main);
然后你运行它:
$ bun ./index.ts
true
但如果你导入它:
import "./index.ts";
并运行它:
$ bun ./other.ts
false
对bun test
的改进
bun test
现在报告运行测试的时间describe.skip
已经实现- 实现了
expect().toBeEven()
和expect().toBeOdd()
在 Linux 上实现更快的 fs.writeFile
fs.writeFile 在 Linux 上处理大文件的速度提高了 20%
转译器改进
这个版本还引入了许多对转译器的改进。以下是其中的一些亮点:
- 解析器支持 TypeScript 5.0。
- 解析器支持导入属性。
- 一些 npm 包出现了
ReferenceError: Cannot access uninitialized variable
的错误,这是由于 Bun 的转译器中存在循环导入的错误。这一点已被修复。 - 支持
// @jsx
、// @jsxImportSource
和// @jsxFragment
注释 - ……
更多详情可查看:https://bun.sh/blog/bun-v0.6.0