自作ツールをdeno.land/xに上げる
英語記事も日本語記事もあるしArticleにするまでもないか…
deno.land/x へアクセスし、Publish moduleを選択
説明が出るのでNext
モジュール名を入力する
使えるのは小文字アルファベット・数字・アンダースコアのみ、3から40文字にする必要がある
別にリポジトリ名と全く同じにする必要はない
条件を満たしており重複していなければ登録できる
次の画面はモジュールがサブディレクトリ内にある場合は指定が必要
今回は何も入力せずNext
ここでGitHub側の操作を求められる
GitHubで公開したいリポジトリを開き、Settings > Webhooks > Add webhookを選択
ここで再度ログインを求められるのでパスワードを入れて認証
deno.land側で表示されたとおり、
- Payload URLを
https://api.deno.land/webhook/gh/markup_tag
に - Content typeを
application/json
に - Event triggerを
Let me select individual events.
からBranch or tag creation
を選択- デフォルトで
Pushes
にチェックが入っている可能性あり、チェックされていたら外しておく
- デフォルトで
下の方へ行ってAdd webhookする
一覧に表示されたらOK
そうするとdeno.land側の表示が更新されているのでDone
リポジトリトップページのサイドバーからReleaseを作成する
/releases/new
にアクセスしても良い
(一つもReleaseがない場合、Refined GitHubとかのプラグインにより表示が消されているかもしれないのでその場合は一旦無効化する)
Create Releases画面に入る
Tag version
とRelease title
とDiscribe this release
を入力してPublish releaseする
リリースされた
deno.land/xのほうでもリリースを確認
TOPページにも載る
ということで公開完了
nest.landにも公開するぞ
nest.landから登録
情報を入力してCreate Account and Generate an API Keyする
直後にAPI Keyが表示されるのでこれを保存
eggs
を落としてくる
最新のバージョンナンバーはこちらのページから取得できる(省略はできない)
❯ deno install -Afq --unstable https://x.nest.land/eggs@0.3.8/eggs.ts
✅ Successfully installed eggs
/Users/kawarimidoll/.deno/bin/eggs
❯ eggs --version
0.3.8
eggs link
でAPIキーを登録
❯ eggs link xxxxxxxxxxxxx
[INFO] Successfully updated .nest-api-key with your key!
eggs init
で設定ファイルを生成
まあ細かいところは後から設定ファイルを開いて直接入力しても良いと思う
こんな感じのファイルが生成される
なおLICENSE
のスペルがミスっていたので修正した
$schema: 'https://x.nest.land/eggs@0.3.8/src/schema.json'
name: markup-tag
entry: ./mod.ts
description: Render markup tags easily
homepage: 'https://github.com/kawarimidoll/deno-markup-tag'
version: 0.1.0
releaseType: null
unstable: false
unlisted: false
files:
- ./mod.ts
- ./README.md
- ./LICENSE
ignore: []
checkFormat: false
checkTests: false
checkInstallation: false
check: true
eggs publish --dry-run
して公開されるファイルを確認
最後に確認を求められるがここではYesしても何も起きない
❯ eggs publish --dry-run
[INFO] The resulting module is:
- name: "markup-tag",
- version: "0.1.0",
- description: "Render markup tags easily",
- repository: "https://github.com/kawarimidoll/deno-markup-tag",
- unlisted: false,
- stable: true,
- upload: true,
- latest: true,
- entry: "/mod.ts"
[INFO] Files to publish:
- ./mod.ts (0.001769MB)
- ./mod.ts (0.001769MB)
- ./README.md (0.001656MB)
- ./LICENSE (0.001075MB)
? Are you sure you want to publish this module? (y/N) › Yes
今更気づいたけどgithubの方でリリースタグにvをつけたのは失敗だったな…
修正しちゃえ
お、レジストリの方にも反映された
ではnest.landにリリース
公開完了!
nest.land用にCIを設定してリリースタグを切ったときにdeno.landにもnest.landにも公開されるようにする
name: Publish this module to nest.land
on:
release:
types: [published]
jobs:
publish-egg:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: denoland/setup-deno@master
- run: deno install -Af --unstable https://x.nest.land/eggs@0.3.8/eggs.ts
- run: |
export PATH="/home/runner/.deno/bin:$PATH"
eggs link ${{ secrets.NEST_API_KEY }}
eggs publish --yes
NEST_API_KEYをrepository secretsに登録する
一覧に出ればOK
2回目以降のリリースはDraft a new releaseから作成する
published