Deno 1.38が出た!
Deno 1.38がリリースされました!
今まで通り
deno upgrade
でアップデートできます。
その一部の機能をご紹介します!
HMR!!
HMRです!Viteとかであるモジュールをスムーズに置き換えられるあれです!
それがDenoでできるようになるんです!
例えば、main.tsを以下のようにします。
import { countUp } from './count.ts'
setInterval(() => {
console.log(countUp())
}, 1000)
addEventListener('hmr', () => {
console.log('HMRが実行されました!')
})
count.tsです
let count = 0
export const countUp = () => {
count += 1
return count
}
普通に実行すると、数字が1秒に一回、1ずつ上がっていきますね。
これを
deno run --unstable-hmr main.ts
として実行します。そうすると、カウントがアップしていきます。
その状態で、count.tsを
let count = 0
export const countUp = () => {
count += 2
return count
}
のようにカウントアップの速度を上げてみます。そして保存すると、メッセージが表示されます。
すると、カウントの状態が保持されたままで速度が上がるはずです!すごい!
windowのhmrイベントで変更をキャッチできるようです。
--unstable-とついているように、不安定な機能のようです。
これは、denoland/deno#20876で実装されたようです。
.envの読み込み
.envのような環境変数ファイルをDenoはサポートしておらず、外部ライブラリや自分で実装しなければなりませんでしたが、ネイティブでサポートされます!
deno run --env main.ts
のようにすると、Deno.envで.envの内容が取得できます!
VSCode拡張
VSCodeのLSPも更新されたようです。
外部モジュールのキャッシュ
今まで、Denoのhttpによる外部のモジュールの補完を使用するには、そのモジュールのキャッシュが存在する必要がありました。
今まで読み込んだことのないモジュールをimportすると、Module Not Foundとなってしまいます。
これを解決するには、一度プログラムをキャッシュしてDenoにキャッシュしてもらう必要がありました。これが解決します!
VSCodeのクイックフィックスを使用して、VSCodeからキャッシュできるようになりました!
deno.jsonのtasksのプレビュー
package.jsonのscriptsは、サイドバーでプレビューできます。
同じように、deno.jsonのtasksを、サイドバーでプレビューできるようになりました!
これにより、よりわかりやすくなります。
より簡単にNode.jsのプロジェクトを実行できるように
より簡単にNode.jsのプロジェクトを実行できるようになりました!
既存のNode.jsプロジェクトに以下のようなdeno.jsonを作成します。
{
"unstable": ["byonm"]
}
すると、その中では、Node.jsのようなモジュール管理でDenoが動作します。
具体的には、
-
npm iしないとModule not found -
import npmModule from 'npm:npmModule'をimport npmModule from 'npmModule'と書ける
ようになります!Node.jsからの移行が簡単になりそうですね!
EventSourceの実装
Server Sent Events(httpを用いて、サーバーから一方向でストリーミングを受けれるやつ)があります。
ブラウザには、そのクライアントとして、EventSourceがありますが、それはDenoにないため、x/eventsourceのようなポリフィルを使う必要がありました。
それが、ネイティブに実装されました!
使い方は、Web標準のEventSourceと同じようです
まとめ
色々な機能が実装されました!その中でも、私が興味深いと思ったものを抜粋しました。
もっと色々な機能があるので、知りたかったらリリースノートを読んでみてください!
Discussion