Open11

JSRを試してみる

hashrockhashrock

jsr.jsondeno.jsonの共存はまだできないっぽい。

jsr.jsonにpackageのオプションを書いてpublishしようとすると、deno.jsonにnameフィールドがないと怒られてしまう。

これはバグ(issueはもうある)とのこと。そのうち治りそう

https://github.com/denoland/deno/issues/22651

hashrockhashrock

Runtime compat

何をもってBrowser対応と言えるのか?ざっと話を聞いた感じは:

  • 基本的にJSRにアップロードしたからといって、ブラウザから直接importすることはできない(内部でnpm: または jsr: からimportしている場合自動的に解決されないので)
  • バンドラから使う場合は、jsrの依存等も解決されるため、バンドラを使う前提でこのブラウザ対応をOKにしてよい
  • ブラウザ対応しているかは基本的には Deno APIまたは Node.js APIを利用しているかで考えてよい
    • ただし機械的にブラウザに対応しているかを判定する方法はない。バンドラがポリフィルして動いてしまうケースもあるし、if(Deno !== undefined)で判定してマルチプラットフォームで動かすライブラリもある
    • 根本的には、この対応欄は「作者がサポートする意思があるか」を選択するところ
hashrockhashrock

DescriptionとRuntime compatはdeno.jsonではなくWeb UIから設定するとのことだった。npmだとこういうのはpackage.jsonから設定するのが普通なのでそう類推したのだけど、確かにドキュメントとにらめっこするの二度手間だよなあ。

そうであればsettingsへのリンクがほしいなと思ったのでPR出した。

https://github.com/jsr-io/jsr/pull/425

hashrockhashrock

JSRをローカルで動かすのはpostgresの設定などが必要で多少ステップは多いけど、普通にREADME通りでできる。Dockerならもう少し楽かも。フロントエンドだけの開発なら deno task prod:frontend で接続できるんだけど、これdeno従業員以外もできるのかな?

ブラウザは http://localhost:8000/ ではなく http://jsr.test/ で開く必要がある点には注意。

nakasyounakasyou

http://localhost:8000/ での開発も普通にできるようです。
また、Deno社以外でも使えます。deno task prod:frontendで公式のAPIサーバーのURLを環境変数で渡していることが理由だと思われます。

hashrockhashrock

JSRをローカルで動かせるなら、社内限定のinternalなJSRを立てる需要もありそうだなと思った。でも今のところ社内のJSRを先に解決して、パッケージがなければGlobalのJSRに取りに行くみたいな仕組みはないと思う、と聞いた。プロクシサーバみたいなのを書けばできるかもしれないけど少しトリッキーかも、とのこと。

ドキュメントには言及あるなあ。そういう使い方は想定されていそう。自分のやりたいことと同じかわからないけど、NPM private registoryのUpstreamとして指定することができるみたい。

https://jsr.io/docs/private-registries

hashrockhashrock

CIからのpublishも試してみる。

基本的にpublishタブの説明に沿ってGitHub Actionsを設定するだけ。簡単。
jsrパッケージとGitHubレポジトリのリンクは下記のように手動で行う必要があった。

この辺を省略するために、GitHubレポジトリからjsrパッケージを作るフローがあってもいいのかもしれない。