バンドルと公開

このページ

サンドボックスプラグインが動作したら、他のサイトがインストールできるように公開しましょう。公開はサンドボックス専用です — ネイティブプラグインはnpm経由で配布されます。

公開すると、CLIはあなた自身のAtmosphereアカウントにリリースを記録します。tarballはあなたがホストします — GitHubリリースアセット、R2、S3、または任意の公開URLとして — そしてレジストリはそれへのリンクを保存します。

前提条件

  • slugpublisherlicense、著者(authorまたはauthors)、およびセキュリティ連絡先(securityまたはsecurityContacts)を含む有効なemdash-plugin.jsoncemdash-plugin validateを実行して確認してください。
  • versionpackage.json内、またはレジストリ専用プラグインの場合はmanifest内)。
  • 公開用のAtmosphereアカウント

あなたのAtmosphereアカウント

**Atmosphereアカウント**で公開します:BlueskyATプロトコルネットワーク内の他のアプリで使用される、ポータブルでユーザー所有のアイデンティティです。1つのアカウントがネットワーク全体での単一のログインであり、どこでも同じ@handleを持ち、あなたのアイデンティティとデータは特定のアプリに紐付けられません。EmDashはこのアカウントをあなたのパブリッシャーアイデンティティとして使用します:公開するすべてのリリースは、あなた自身のアカウント内のレコードであり、あなたとして署名されます。

EmDashは、サイト用のAtmosphereログインと同じAtmosphereアカウントを使用します。

既存のアカウントを使用する

すでにBlueskyアカウントまたは他のAtmosphereアカウントをお持ちの場合は、そのハンドルでサインインしてください:

emdash-plugin login alice.bsky.social

これにより、アカウントプロバイダーのサインインページがブラウザで開きます。EmDashはあなたのパスワードを見ることはありません。emdash-plugin whoamiは保存されたセッションを一覧表示します;emdash-plugin switch <did>はアクティブなセッションを変更します。

アカウントに登録する

まだAtmosphereアカウントをお持ちでない場合は、任意のプロバイダーを通じて作成し、emdash-plugin login <your-handle>を実行してください。オプション:

  • Blueskyなどのアプリ。 Blueskyに登録すると、BlueskyがホストするAtmosphereアカウントが作成されます。これが最も迅速なルートです。
  • 独立系プロバイダー。 コミュニティ運営またはプライバシー重視のアカウントホスト。atmosphereaccount.comでオプションを参照してください。
  • セルフホスト。 アイデンティティとデータを完全に制御するために、独自のプロバイダーを運営します。

どれを選択しても、そのアカウントの@handleemdash-plugin loginに渡すもので、アカウントのDIDがmanifest内でpublisherとして固定するものです。

3つのステップ

以下のコマンドは、ログイン、tarballのビルド、およびホストされたtarballを指すリリースの公開を行います:

emdash-plugin login                     # まだログインしていない場合
emdash-plugin bundle                    # dist/<slug>-<version>.tar.gzを生成
# そのtarballを公開URLにアップロードし、次に:
emdash-plugin publish --url https://your-host/<slug>-<version>.tar.gz

bundleは終了時に次の2つのステップを出力します。--urlの呼び出しも含まれているため、形式を覚える必要はありません。

Bundle

bundlebuildを実行し、検証し、アセットを収集し、tarballを作成します。tarball内では、plugin.mjsbackend.js(レジストリが期待するファイル名)としてパックされます。

コマンドは以下のフラグを受け付けます:

emdash-plugin bundle [--dir <path>] [--out-dir|-o <path>] [--validate-only]
フラグデフォルト説明
--dir現在のディレクトリプラグインソースディレクトリ。
--out-dir, -odisttarballの出力ディレクトリ。
--validate-onlyfalsetarballをスキップしますが、dist/アーティファクトは生成します。

Tarballの内容

ファイル必須説明
manifest.jsonはい生成されたmanifest:id、version、capabilities、hosts、およびソースから読み取られたフックとルート。手動でメンテナンスすることはありません。
backend.jsはいビルドされた自己完結型ランタイムファイル(dist/plugin.mjs)。
README.mdいいえプラグインドキュメント。
icon.pngいいえ256×256 PNG。
screenshots/いいえ最大5枚、最大1920×1080。

検証

bundle(および--validate-only)は以下をチェックします:

  • サイズ制限(RFC 0001、解凍後): 合計≤256 KB、ファイルごと≤128 KB、≤20ファイル。gzip圧縮されたtarballはその一部です。
  • backend.jsにNodeビルトインなし — サンドボックスコードはfspathchild_processなどをインポートできません。Web APIを使用するか、そのロジックをネイティブプラグインに移動してください。
  • Capabilityの健全性 — 名前は認識されたセット内にある必要があります。
  • トラストコントラクトの一貫性manifestからのnetwork:request / allowedHostsクロスルール。
  • アセット制限 — アイコン256×256、≤5スクリーンショット≤1920×1080。

公開前にtarballを検査するには、その内容をリストしてください:

emdash-plugin bundle
tar tzf dist/my-plugin-1.1.0.tar.gz

Publish

公開はリリースレコードを書き込みます。tarballはすでに公開URLでホストされている必要があります:

emdash-plugin publish --url <hosted-tarball-url>

--urlは必須です:それはプラグインのバイトが存在する場所であり、レジストリレコードはそれを指します。レコードを書き込む前に、ホストされたURLがビルドした正確なバイトを提供することを確認するには、--localを渡します:

emdash-plugin publish --url https://your-host/foo-1.0.0.tar.gz --local dist/foo-1.0.0.tar.gz

publishが行うこと:

  1. --urlでtarballを取得し(URLとサイズのガード付き)、そのバイトからmanifestを抽出します。
  2. Atmosphereアカウントセッションを再開し、パブリッシャー固定をチェックします — アクティブなセッションはmanifestの固定されたpublisherと一致する必要があります。そうでない場合はMANIFEST_PUBLISHER_MISMATCHで拒否されます。
  3. 最初の公開時にmanifestからパッケージプロファイルを作成します(license、著者、セキュリティ連絡先)。以降の公開では、既存のプロファイルが優先されます。
  4. プロファイルとリリースレコードをアカウントに公開します。

最初の公開時には、manifestの代わりにフラグ(--license--security-email、…)でプロファイルフィールドを提供できます;明示的なフラグはmanifest値をオーバーライドします。これはCIで便利です。--no-manifestはmanifestを完全にオプトアウトします。

バージョンは不変です

公開されたバージョンは上書きまたは再公開できません。再公開する前にversionをバンプしてください。ビルドはpackage.jsonからversionを読み取ります(manifestリファレンスを参照)。拡張されたトラストコントラクトにはmajorをバンプし、新しいフックまたはルートにはminorを、修正にはpatchをバンプします。

パブリッシャーの不一致

publishMANIFEST_PUBLISHER_MISMATCHで失敗した場合、アクティブなセッションはmanifestの固定されたpublisherとは異なるAtmosphereアカウントです。emdash-plugin switch <did>で固定されたアカウントに切り替えるか、プラグインを新しいアカウントに本当に転送する場合はmanifest内のpublisherを更新してください。セッション管理については既存のアカウントを使用するを参照してください。

次に読むべきもの