kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

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

Closed kachick closed 1 year ago

kachick commented 1 year ago

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

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

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

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

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

使用例は https://github.com/kachick/renovate-config-asdf/pull/108

kachick commented 1 year ago

尚 node20 に上げると動かなくなってた。 https://github.com/meyfa/ts-node-test/issues/64#issuecomment-1540021495 => https://github.com/nodejs/node/issues/47880

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

kachick commented 1 year ago

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

https://github.com/kachick/renovate-config-asdf/pull/1028 https://github.com/kachick/renovate-config-asdf/pull/1029

kachick commented 1 year ago

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

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

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

kachick commented 3 months ago

ruby とか ecpected actual の語順なのに node のは actual expected なので目が滑る 郷に入っては郷に従えでやりたいとこだけど、毎日触ってでも無いとこの手のはパッと思い出せないなー

kachick commented 3 months ago

TypeScript 使ってるとIDEの type hint 教えてくれるから良いやんという話はあるが・・・ 過去に間違えて書いたやつ書き直したいけどそもそも洗い出しも大変そうでぐえーだ