以外と調べてもやり方が出てこなかったので、備忘録がてら残しておく。
(といっても残しておくまでもないほど簡単だったのですが、情報はあったほうが良いだろうと思い)
目次
DenoのThird Party Modulesに自作のモジュールを登録する方法
上記Third Party Modulesのページに行くと、ページ上部に Publish a module
というボタン、もしくはページ下部に Add a module
というボタンがあり、それを押してmoduleのリリース作業を行う。
DenoのThird Party Modulesとして公開する際の前提条件
Deno Third Party Modules内で公開する場合、GitHubのパブリックリポジトリにコードがホスティングされている必要があるよう。
仕組み的にはこのパプリックリポジトリに対して、GitHub webhooksを利用して連携させるような形となる。
モジュール公開までの手順
- ページ上部にある
Publish a module
というボタン、もしくはページ下部のAdd a module
というボタンを押す。 - 次にmoduleの名前を入力する
- 公開するモジュールが置かれているリポジトリのサブディレクトリなども指定できるようだが、自身は行っていない。
- 次にモジュールをホストしているGitHubのパブリックリポジトリにGitHub webhooksを設定する
GitHub webhooksの設定方法
- リポジトリの
Settings
タブをクリック - 次に
webhooks
タブをクリック Add webhook
ボタンをクリック- payload URLのフィールドに指定されたURLをコピペして入力
- content typeは
application/json
を指定 Let me select individual events
を選択Branch or tag creation
というチェックボックスだけをチェックするAdd webhook
を押して完了
これで少し待つと自身のモジュールが公開されていることが確認できる。
最後にタグを打ってリモートリポジトリにpushする
GitHub webhooksの設定が終わったらもう一息。
ここまで終わってからDeno Third Party Modulesの自身のmoduleのページに行くとこんな表示が出ている。
Deno Third Party Modulesではタグを打つたびに、その内容をfetchして反映してくれるため、タグを打ってリモートリポジトリに反映させる必要がある。
(タグを打つと、さきほど設定したGitHub webhooksが反応してDeno側に連携してくれる。)
というわけで、タグを打つ。
私は下記のようにタグを打った。
(もちろんここはひとそれぞれ)
git tag -a v0.1.0 -m "First version v0.1.0" git push origin tags/v0.1.0
そして再度Deno Third Party Modulesにアクセスすると、自身のコードを確認することができる。
Denoに移植したEast Asian Width
ちなみにこちらを公開しています。
East Asian WidthをDenoに移植したmoduleです。
最近CLI向けのコードをDenoで書いていたのですが、そこで利用したくてDeno向けに移植をさせてもらいました。
下記のような形で使えます。
import { characterLength, eastAsianWidth, length, } from "https://deno.land/x/deno_eastasianwidth@v0.1.0/mod.ts"; console.log(eastAsianWidth("₩")); // 'F' console.log(eastAsianWidth("。")); // 'H' console.log(eastAsianWidth("뀀")); // 'W' console.log(eastAsianWidth("a")); // 'Na' console.log(eastAsianWidth("①")); // 'A' console.log(eastAsianWidth("ف")); // 'N' console.log(characterLength("₩")); // 2 console.log(characterLength("。")); // 1 console.log(characterLength("뀀")); // 2 console.log(characterLength("a")); // 1 console.log(characterLength("①")); // 2 console.log(characterLength("ف")); // 1 console.log(length("あいうえお")); // 10 console.log(length("abcdefg")); // 7 console.log(length("¢₩。ᅵㄅ뀀¢⟭a⊙①بف")); // 19