Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2022-09-16 - Node.js v18 から導入された built-in の test runner でも、 TypeScript で書かれたテストを走らせる #192

Closed
kachick opened this issue Sep 16, 2022 · 3 comments

Comments

@kachick
Copy link
Owner

kachick commented Sep 16, 2022

3ヶ月前、Node 16 だった小さめのプロジェクトを Node 18 へ移行させる際、ついでなので jest で書かれていたテストを nodejs/node#42325 で入った組み込みのに移行させてみようとした。 bun は試してないけど、deno とかの流れで最低限のスタックは組み込みで提供されるようになるととても助かる。ただでさえ npm の依存性管理は常に辛いので、減らせるなら jest でもなんでも減らしたい。

が、幾つか調べたけどサックリ実現出来る手段は無さそうだった。引っかかったのはこの test runner 自体で対応していないのと、ts-node も対応していない感じだったから。それ以上調べて~みたいな気力はあんまなかったし、調べても簡単に出来そうになかった。

そしてまた使いたいシーンがやってきて、渋々 .mjs とかでテストを書いてた。その時あわよくばで調べたら、対応させたライブラリを公開している方が居た。

https://github.com/meyfa/ts-node-test

TypeStrong/ts-node#1853 で issue を作って、自分でサードパーティで対応させたのかな?便利~
まだ自分以外の ⭐ が無かったので紹介しておく。

使用例は kachick/renovate-config-asdf#108

@kachick
Copy link
Owner Author

kachick commented Jul 23, 2023

尚 node20 に上げると動かなくなってた。 meyfa/ts-node-test#64 (comment) => nodejs/node#47880

つらぽよ・・・ deno は色々楽だけど、まだ完全に乗り換えられるわけでもないしなぁ
後 github actions がようやっと重い腰を上げて node16 から node20 へ上げる。今更なので?node18はスキップするわというアナウンス actions/runner#2704 (comment) が出ていたけれど、それで個人的に一番嬉しくなる筈だった test runner の jest 落としが出来なくなりそうで・・・

@kachick
Copy link
Owner Author

kachick commented Jul 23, 2023

tsx(esbuild) とか、多分 swc 系でも nodejs/help#3902 (comment) みたいなアプローチで動かせた!
元々 ts-node 自体が TypeScript 5.0 以降の config extends array 対応 PR をマージしたけれどずっとリリースしてないし、vite とか使ってると esbuild 前提になりやすいので基本的に tsx 使うようにした方がベター感はある
これで node20 でもとりあえずやっていけそう

kachick/renovate-config-asdf#1028
kachick/renovate-config-asdf#1029

@kachick
Copy link
Owner Author

kachick commented Jul 23, 2023

というのは node18からの built in test runner なら出来るよということで、jest の場合は ts-node にべっとりっぽくてまだリプレスできそうに無いかな jestjs/jest#13143

node16 のプロジェクトを漸進的に更新するみたいなのが出来なくてつらい感じは否めないけど、パスが見えてるだけ大分マシではある

(こういったあれを上げるとこちらが対応しておらず死ぬみたいな nodejs 界隈 dependency hell のツラミみたいなのに出くわすといつも億劫になるので、 deno のオールインワンな方向性はそら好まれるよなぁ)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant