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

docs: add articles/2024/11/10 #287

Merged
merged 5 commits into from
Nov 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
251 changes: 251 additions & 0 deletions content/articles/2024/11/10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
---
title: 2024/11/04〜2024/11/10の最新情報
tags:
- Deno
- Deno KV
- deno_std
categories:
- news
date: 2024-11-10
description: >
Deno v2.0.5 (ワークスペースメンバーのワイルドカード形式での指定がサポート, .cts形式のサポート, など), Deno v2.0.6 (Deno.serveでのRequest.signalのサポートなど), Deno v2.1で導入が検討されている機能について (deno updateとdeno outdatedコマンド, deno fmtでの.sqlのサポート, Deno.tracing), denoland/kv-utils
---

## Deno v2.0.5

[Deno v2.0.5](https://github.com/denoland/deno/releases/tag/v2.0.5)がリリースされています。

### Workspaces

#### メンバーのワイルドカード形式での指定がサポート

[ワークスペース]({{< ref "articles/deno/v1.45.md" >}})のメンバーの指定でワイルドカード形式がサポートされています:

```json
{
"workspace": [
"./packages/*"
]
}
```

---

- [fix(workspace): support wildcard packages #26568](https://github.com/denoland/deno/pull/26568)

### `deno add`/`deno install`

#### `package.json`を更新する際の振る舞いの変更

[Deno v2.0.0-rc.2]({{< ref "articles/2024/09/15.md" >}})では、`package.json`が存在する状態で`deno add`/`deno install`によってnpmパッケージを追加しようとした場合、`deno.json`ではなく常に`package.json`が更新されるよう挙動が変更されました。

Deno v2.0.5ではこの挙動が微調整され、`deno.json`と`package.json`の両方が検出された場合、`package.json`の配置場所が`deno.json`よりも現在のパスに近いときだけ`package.json`にnpmパッケージ(`npm:`)が追加されるよう変更されています。

---

- [fix(add): only add npm deps to package.json if it's at least as close as deno.json #26683](https://github.com/denoland/deno/pull/26683)

### `deno fmt`

#### YAMLでの`deno-fmt-ignore-file`ディレクティブのサポート

`# deno-fmt-ignore-file`から始まるYAMLファイルは`deno fmt`コマンドによるフォーマット対象から除外されるように挙動が変更されています。

---

- [fix(fmt): ignore file directive for YAML files #26717](https://github.com/denoland/deno/pull/26717)

### `deno coverage`

#### コメントの集計対象からの除外

コメントの行が`deno coverage`コマンドによる集計対象から除外されるよう振る舞いが改善されています。

---

- [fix(coverage): Exclude comment lines from coverage reports #25939](https://github.com/denoland/deno/pull/25939)

### `deno lsp`

#### `deno.unstable`

`deno.json`だけでなく、`.vscode/settings.json`などの`deno.unstable`で指定されたunstable APIが`deno lsp`によって認識されるよう改善されています。

---

- [fix(lsp): include unstable features from editor settings #26655](https://github.com/denoland/deno/pull/26655)

### `deno serve`

#### HMRのサポート

`deno serve`で[`--watch-hmr`]({{< ref "articles/deno/v1.46.md" >}})オプションがサポートされています。

---

- [fix(serve): support serve hmr #26078](https://github.com/denoland/deno/pull/26078)

### Deno API

#### `Deno.PermissionOptionsObject`

[`Deno.PermissionOptionsObject`](https://github.com/denoland/deno/blob/v2.0.5/cli/tsc/dts/lib.deno.ns.d.ts#L549)の型定義に[`import`]({{< ref "articles/2024/09/29.md" >}})プロパティが追加されています。

---

- [fix(types): missing `import` permission on `PermissionOptionsObject` #26627](https://github.com/denoland/deno/pull/26627)

### Node.js互換性の改善

#### `.cts`形式のサポート

CommonJSサポートが改善され、`.cts`形式のサポートが追加されています。

また、`deno compile`で`.cjs`/`.cts`に依存したプログラムの実行可能ファイルの生成もサポートされています。

---

- [fix: improved support for cjs and cts modules #26558](https://github.com/denoland/deno/pull/26558)

#### `npm_config_user_agent`

`deno run`または`deno task`でnpmパッケージを実行する場合、`npm_config_user_agent`環境変数が設定されるよう改善されています。

---

- [fix(cli): set `npm_config_user_agent` when running npm packages or tasks #26639](https://github.com/denoland/deno/pull/26639)

#### `node:module`

Next.js v15.0.4向けに、`default export`に`findSourceMap`が含まれるよう修正されています。

---

- [fix(ext/node): add `findSourceMap` to the default export of `node:module` #26720](https://github.com/denoland/deno/pull/26720)

#### `node:fs`

`readFile()`でエラーが発生した際に、Node.jsと同様のフォーマットでエラーが返却されるよう改善されています (Storybook向けの改善のようです)

---

- [fix(ext/node): convert errors from `fs.readFile`/`fs.readFileSync` to node format #26632](https://github.com/denoland/deno/pull/26632)

#### `node:os`

`userInfo()`が再実装され、互換性が改善されています。

---

- [fix(node): Implement `os.userInfo` properly, add missing `toPrimitive` #24702](https://github.com/denoland/deno/pull/24702)

## Deno v2.0.6

[Deno v2.0.6](https://github.com/denoland/deno/releases/tag/v2.0.6)がリリースされています。

### `deno install`

#### ワークスペースを使用したプロジェクトにおける挙動の改善

ワークスペースを利用したプロジェクトにおいて引数なしで`deno install`を実行した際に、各ワークスペースメンバーが依存しているjsrパッケージもまとめてインストールされる挙動が改善されています。

---

- [fix(install): cache jsr deps from all workspace config files #26779](https://github.com/denoland/deno/pull/26779)

### `Deno.serve`

#### `Request.signal`のサポート

HTTPリクエストがキャンセルされたら、`Deno.serve`のハンドラーに渡された`Request`オブジェクトの[`signal`](https://developer.mozilla.org/en-US/docs/Web/API/Request/signal)プロパティが[`aborted`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/aborted)状態に変わるよう改善されています。

---

- [feat(ext/http): abort event when request is cancelled #26781](https://github.com/denoland/deno/pull/26781)
- [feat(ext/http): abort signal when request is cancelled #26761](https://github.com/denoland/deno/pull/26761)

### Web API

#### `performance.timeOrigin`

[`performance.timeOrigin`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/timeOrigin)により正確な値が設定されるよう実装が改善されています。

後述する`Deno.tracing` APIの追加に向けた改善のようです。

---

- [fix: performance.timeOrigin #26787](https://github.com/denoland/deno/pull/26787)

### `deno lsp`

#### BYONMサポートの改善

[BYONM]({{< ref "articles/deno/v1.38.md" >}})が有効化されたプロジェクトにおいても、Auto importが動作するよう改善されています。

---

- [feat(lsp): auto-import completions from byonm dependencies #26680](https://github.com/denoland/deno/pull/26680)

### Node.js互換性の改善

#### `node:inspector`

未実装であった`Session`などの各メソッドや`open()`や`close()`などのAPIが実装されています。`vitest run --coverage`コマンドのサポートに向けた対応のようです。

---

- [fix(ext/node): better inspector support #26471](https://github.com/denoland/deno/pull/26471)


#### `node:zlib`

`gzip()`と`gzipSync()`の引数として`ArrayBuffer`がサポートされています。

---

- [fix(node:zlib): gzip & gzipSync should accept ArrayBuffer #26762](https://github.com/denoland/deno/pull/26762)

## Deno v2.1で導入が検討されている機能について

[先週]({{< ref "articles/2024/11/03.md" >}})に続いて、Deno v2.1に入ることが検討されていると思われる機能に関していくつかPRやブログ記事が公開されているため、紹介します。

### `deno update`/`deno outdated`

Denoの公式ブログで以下の記事が公開されています:

- [Introducing your new JavaScript package manager: Deno](https://deno.com/blog/your-new-js-package-manager)

この記事では今後、Deno本体に実装予定の[`deno update`]({{< ref "articles/2024/11/03.md" >}})コマンドや`deno outdated`コマンドについて紹介されています:

- `deno update` - 依存関係をアップデートするためのコマンドと思われます
- `deno outdated` - 依存パッケージの最新バージョンなどを表示してくれるコマンド

---

- [feat: Add `deno update` and `deno outdated` subcommands [WIP] #26219](https://github.com/denoland/deno/pull/26219)

### `deno fmt` - SQLファイルのフォーマットのサポート

`deno fmt`コマンドにSQL(`.sql`ファイル)のフォーマットをサポートするPRが作成されています:

- [feat(fmt): support SQL #26750](https://github.com/denoland/deno/pull/26750)

内部的には[`sqlformat`](https://github.com/shssoichiro/sqlformat-rs)が利用されているようです。

有効化するには`deno.json`の[`unstable`]({{< ref "articles/deno/v1.38.md" >}})フィールドに`"fmt-sql"`を指定するか、`--unstable-sql`オプションを指定する必要がありそうです。

### `Deno.tracing`

以前に紹介した[`@deno/otel`]({{< ref "articles/2024/10/20.md" >}})パッケージの内部で使用されている`Deno.tracing` APIを実装するPRが作成されています:

- [feat: OpenTelemetry Tracing API and Exporting #26710](https://github.com/denoland/deno/pull/26710)

unstable APIとして追加が検討されているようで、有効化するには`deno.json`の`unstable`フィールドに`"otel"`を指定する必要がありそうです (`"unstable": ["otel"]`)

## `denoland/kv-utils`

以前に紹介した[`@std/kv`]({{< ref "articles/2024/10/20.md" >}})についてですが、`deno_std`からは独立したパッケージとして公開されることが検討されているようです。

- リポジトリ: [denoland/kv-utils](https://github.com/denoland/kv-utils)

今のところ、[`@deno/kv-utils`](https://github.com/denoland/kv-utils/blob/7bc751c41c6112eced84ece94dd99266b183bd13/deno.json#L2)という名前でパッケージが公開されることが検討されているようです。
Loading