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