33
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Deno の公式レジストリの登録方法が手動から自動になりました

Posted at

Deno の公式レジストリの登録方法が変わりました! 本記事ではその登録方法について解説します。

(この記事は Deno の公式レジストリに自分の書いたモジュールを登録してみたい人向けの記事です。npm にモジュールを登録した経験がある人などが主な対象読者です。)

Deno の公式レジストリとは

Deno の公式レジストリは https://deno.land/x にあります。(特に固有の名称などはありません。単にレジストリと呼ばれることが多いです。)

これまで、ここに自分の作ったモジュールを登録するには、公式ホームページのレポジトリにある JSON ファイルに PR を出して、
手動でマージしてもらうことが必要でした。

スクリーンショット 2020-08-09 14.16.47.png

(旧来のワークフローでは手動のレビューとマージをしていました)

この若干面倒だった登録フローが、8/3のアップデートで、
PR を出す必要のない自動的なワークフローに置き換わりました。

本記事では、その登録方法を解説します。

新レジストリの概要

まず新レジストリに登録されるものは GitHub レポジトリのタグのみになります。これまでは branch名 (master など) や commit hash などでも import 出来ていましたが、これらの import は出来なくなります。

OK
import { myFunc } from "https://deno.land/x/my_module@v1.0.0/my_func.ts";
NG
import { myFunc } from "https://deno.land/x/my_module@master/my_func.ts";
import { myFunc } from "https://deno.land/x/my_module@1e587a0/my_func.ts";

そしてタグの登録方法が少し特殊で、npm のようなコマンドによる登録ではなく、github から Webhook で Deno レジストリの API を叩くことでタグが登録される仕組みになっています。

以下ではこの Webhook の登録方法を解説します。

Webhook の登録方法

レジストリに登録したいレポジトリの Settings から Webhook のページに行き、以下のように Webhook を設定しましょう。

  • Payload URL: https://api.deno.land/webhook/gh/モジュール名 (モジュール名の部分は登録したいモジュール名に置き換える)
  • Content type: application/json
  • Events: Let me select individual events. を選び Branch or tag creation のみにチェック
  • その他はデフォルト設定

この設定をすることで、タグを作った時に Deno レジストリのタグ登録用 API に POST リクエストが飛ぶようになります。

この状態で実際にタグを作ってみましょう

git tag v0.1.0
git push origin v0.1.0

Webhook がうまく飛ぶと、Webhook 設定ページで以下のように、リクエストとレスポンスのログを見ることが出来ます。

スクリーンショット 2020-08-09 14.04.08.png スクリーンショット 2020-08-09 14.05.25.png

この例では、筆者の kt3k/deno_license_checker という github レポジトリを deno.land/x/license_checker として登録しています。

登録がうまくいくと、deno.land 上の当該ページ ( https://deno.land/x/モジュール名 ) 上で作ったタグのバージョンが追加されます。

スクリーンショット 2020-08-09 14.07.25.png

モジュール登録の注意点

モジュールの各タグはイミュータブルになるという原則があります。したがって、同じタグを2回以上登録して上書きするような事は出来ません。何かを変えたい場合は必ずバージョンを上げましょう。

また、当然ですが、モジュールの乗っ取りも出来ないようになっています。ある GitHub レポジトリに紐付いたモジュール名に別の GitHub レポジトリからタグ登録しようとしてもエラーになります。

npm との違い

npm では npm publish というコマンドでパッケージのバージョンを登録する仕組みでしたが、これに相当するコマンドは用意されていません。Webhook を設定したレポジトリで、タグを切ってプッシュすることがイコール新しいバージョンを公開することになります。

なお npm の場合は publish する人の認証のために npm コマンドにログインすることが必要でした。Deno のレジストリではそのような認証の仕組みはありません。Deno のレジストリの場合は GitHub の特定のレポジトリとモジュールがリンクされる (かつそのリンクが変わることはない) ため GitHub 上での認証がモジュールの認証を兼ねていると言えます。

まとめ

本記事では、Deno の新しいレジストリでのモジュールの登録方法を紹介しました。Webhook を設定してレジストリに publish するという仕組みは若干目新しいですが、慣れれば難しい設定ではありません。ぜひ Deno の新しいレジストリにモジュールを登録してみましょう 🦕

33
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?