Deno v1.38.3
Deno v1.38.3がリリースされました。
deno publish
コマンドについて
⚠️パッケージレジストリが公開されていないため、この機能はまだ利用できません。また、この機能には、今後、大きな変更が入る可能性があります。
Denoの新しいパッケージレジストリへパッケージを公開するためのコマンドが実装されているようです。(helpメッセージにはこのコマンドは表示されず、まだ使用は推奨されません)
現時点では、公開したいパッケージが含まれるディレクトリを指定して利用することが想定されているようです。
$ deno publish path/to/package_directory
引数で指定したディレクトリには、以下の項目を設定したdeno.json
を置いておく必要があります。
項目 | 説明 |
---|---|
version | パッケージのバージョン |
name | パッケージ名(@<scope_name>/<package_name> のフォーマット) |
また、もし指定されたディレクトリでワークスペースが有効化されている場合、ワークスペース内の各パッケージがまとめて公開されるようです。
パッケージが公開される際は、Import Mapsの内容を元に各ファイルのspecifierを解決した後、tarballが作成され、DENO_REGISTRY_URL
へアップロードされるようです。
認証については、--token
オプションでpublish用のAPIトークンを指定できます。もし--token
オプションが指定されなかった場合は、以下のように認証が行われるようです。
- GitHub Actionsで実行されていれば、OIDCを使用する。
- そうでなければ、インタラクティブに認証をする。
その他の改善
node:stream
:Writable
で意図した通りにデータが書き込まれないことがある問題が修正されています。@jsx
プラグマとshebangを併用するとパニックする問題が修正されています。deno repl
/deno jupyter
でPromise was collected
エラーが起きることのある問題が修正されています。NO_COLOR
環境変数に空文字列が設定されている際は、Deno.noColor
にtrue
が設定されないように修正されています。
deno_std v0.208.0
deno_std v0.208.0がリリースされています。
既存モジュールの非推奨化
以下のモジュールが非推奨化されました。
std/collections/group_by.ts
: 今後はObject.groupBy
の利用が推奨されます。std/http/method.ts
std/expect
新規モジュールとしてstd/expectが追加されています。
Jestライクなアサーションが提供されています。
import { expect, fn } from "https://deno.land/std@0.208.0/expect/mod.ts";
expect(1).toBe(1);
expect("foo").not.toBe("bar");
const f = fn(() => 987);
expect(f(123, "bar")).toBe(987);
expect(f).toHaveBeenCalledWith(123, "bar");
std/crypto/crypto.ts
BLAKE2B-160
がサポートされています。
esm.sh v135
esm.sh v135がリリースされています。
esm.sh/run
というスクリプトが追加されており、これをHTMLから読み込むことで、ビルドなしでTypeScriptやJSXなどのコードをブラウザで動かせるようです。
内部ではesm.shのビルドAPIが活用されているようです。
その他には、package.jsonに"esm.sh"フィールドを記述しておくことで、バンドルに関する挙動を制御できるようにする機能が追加されています。
--unstable-unsafe-proto
オプションの導入について
Deno本体に--unstable-unsafe-proto
というオプションを追加するPRがマージされています。Deno v1.39あたりでリリースされる可能性がありそうです。
セキュリティのため、DenoはデフォルトでObject.prototype.__proto__
を削除します。--unstable-unsafe-proto
を指定することで、この挙動を無効化できるようです。
一部のnpmパッケージを動かす際に、Object.prototype.__proto__
が欲しい場面が出てくるというのが導入の背景のようです。