- 2024/5/3
- https://deno-ja.connpass.com/event/316018/
- https://zenn.dev/hashrock/articles/33d684a84351b6
JSRの紹介
- @kt3kさん
- Denoの中の人
- https://kt3k.github.io/talk_jsr
npm
- ES6もTSもない時代に作られたもの
- CommonJSがデフォルト
- TSに関するサポートがない
- npmの開発が低調
JSRの狙い
- ESMとTSを前提としたレジストリを0から設計するといいのでは
JSRの特徴
- TSを直接パブリッシュ出来る
- トランスパイル不要
- d.tsは勝手にJSRが作ってくれる
- モジュール解決はESMだけ
- CommonJSはなし
- npmと互換性あり
- JSRパッケージからnpmパッケージが使えるしその逆もOK
- npmのスーパーセット
- 複数ランタイム前提
- サポートするランタイムを指定できる
- ブラウザ/Deno/Node/Bun
- OSS
- https://github.com/jsr-io/jsr
- セルフホストできる
Deno
- Denoでは今後JSRを推奨
- stdライブラリもJSRに移っている
- urlを直接書くのが受け入れられていなかったので軌道修正
Denoのモジュール解決
- hashrockさん
- https://docs.google.com/presentation/d/1hfJqhJmYC0zPxwdMmwQ0woNPiEWbRZBd0SOi9v34q34/edit?usp=sharing
目指すところ
- deno.land/xでどうだったか
- 必要なものだけ
- 指定したものだけ入ってくるようになってる
- npmだと依存全部入ってくる
- 並列ダウンロード
- 逐次ダウンロードだった
- インポートマップを使ったライブラリ作成
- 普通には使えない
- semverの解決
- URL直接指定なので微妙に違うバージョンの重複が起きた
- 内部構造を公開しない
- ファイル構造を変更できるように
- 拡張子も露出させたくないが対応できてなかった
- TSをソースとして使う
- サポートしてたが遅かった
- 高速な方チェック
- パッケージ全体を見ないといけないから遅かった
- JSRだとこれらが解決されている
JSRをローカルで動かしてみよう
- @magurotunaさん
- Deno Deployの中の人
- https://jsr-meetup-maguro.deno.dev/
JSRのローカル起動
- OSSなので手元でビルドして動かせる
- READMEにだいたい書いてある
- フロントエンドを立ち上げるのはcloneして起動するだけで簡単
- 本番のAPIを叩くUIをローカルで動かせる
- バックエンドはrust周りのセットアップもいるので最初はちょっと重い
- DBもローカルで作るのでどんな情報が保存されるか見える
JSRにモジュールを公開するまで/公開してから
- @okutann88さん
パッケージ公開するまで
- Thothという全文検索を作った
- slow typesのエラー対応
- 型を明示的につける
パッケージ公開してから
- ドキュメントのサイトを作った
- スコアを上げるためにいろいろ対応した
- JSDocを書く
slow types ってなんだろう?
slow types
- 内容
- 明示的な型宣言がないもの
- 広範囲な推論を必要とするもの
- 全部につけないといけないわけじゃない
- 検出
- deno lintでやるといい