前言

最近我在开发一个demo程序,为了加速开发,我觉得直接用js要比用typescript更快,而且这只是一个demo程序,杀鸡焉用牛刀。

而且一旦我要用typescript开发,避免不了要各种配置,例如typescript, ts-node, nodemon之类的,很是繁琐。而且ts也必须要经过编译后才能运行。

然而,直到遇到一个bug, 我排查了半天,才发现是一个对象的属性写错了。本身这个对象是没有这个属性的,js没有任何错误提示。我只能一步一步缩小代码的范围,最终才定位到是属性拼写的错误。

这个拼写的错误,应该是vscode的智能补全,给出的提示词,我直接回车确认了。

这件事给我一个教训:以后所有代码都要用ts去编写。

直接用js去编写虽然看起来写的快,但是代码调试太痛苦了。 这种拼写错误,ts的智能提示会直接告诉你错误的地方,但是如果去排查js文件,花费的时间是无法估量的。

但是我又不太想去配置各种ts的执行环境,就想起来之前曾经用的bun这个ts执行工具。

虽然bun这个工具才刚刚发布1.0版本,但是在开发环境使用也是足够了。

我的设想是在开发环境用bun, 在生产环境用nodejs执行bun编译后的js代码。

这个demo程序用bun去运行的时候,没发现任何兼容问题。 这也让我有了继续研究下去的信心。

bun的开发环境

我之前看过deno, 但是看多deno的官方文档后,发现并不符合我的胃口。 但是bun的文档写的很好。

任何工具的第一步都是安装,但是bun似乎在windows上执行并不太好,所以我是用windows的linux子系统,或者在mac上安装的bun。

具体的安装步骤可以参考,https://bun.sh/docs/installation

项目初始化

bun init

bun init helps you get started with a minimal project and tries to
guess sensible defaults. Press ^C anytime to quit.

package name (quickstart):
entry point (index.ts):

Done! A package.json file was saved in the current directory.
 + index.ts
 + .gitignore
 + tsconfig.json (for editor auto-complete)
 + README.md

To get started, run:
  bun run index.ts

使用bun运行index.ts

bun run index.ts 
Hello via Bun!

安装npm包

bun add figlet
bun add -d @types/figlet

修改index.ts

import figlet from "figlet";
const body = figlet.textSync("Bun!");
console.log(body);

执行index.ts, 输出

  ____              _ 
 | __ ) _   _ _ __ | |
 |  _ \| | | | '_ \| |
 | |_) | |_| | | | |_|
 |____/ \__,_|_| |_(_)

然后我们尝试把index.ts编译js文件。

编写一个build.ts编译文件

参考资料