Murasaki
ビルド & 配布

CLI リファレンス

dev、build、bundle、installer など、Murasaki のすべてのコマンド。

murasaki dev         Vite の開発サーバー + ネイティブウィンドウを起動する(HMR、Fast Refresh)
murasaki build       本番用の Vite ビルド → dist/client
murasaki bundle      現在のプラットフォーム向けのネイティブアプリフォルダ / .app
murasaki installer   現在のプラットフォーム向けの配布用インストーラー
murasaki demo        チェックサム検証済みmacOS開発者プレビューを起動する
murasaki init        Rust ツールチェーンをインストールする(@murasakijs/native 自体をいじる場合のみ)
murasaki icon        1つの PNG から .icns / .ico / .png を生成する
murasaki release     自動更新マニフェストのヘルパー
murasaki help        このヘルプを表示する

開発とパッケージングは macOS、Windows、Linux に対応しています。Linux の bundle は AppDir と .AppImage を生成し、installer はさらに .deb も生成します。Linux の --sign.AppImage.deb、まとめた SHA256SUMS に GPG 署名します。RPM パッケージやリポジトリ用メタデータへの対応はまだありません。--sign を明示的に指定した場合は、すべてのプラットフォームで出力前に処理を停止します(フェイルクローズ)。未署名の成果物を黙って生成することはありません。

murasaki dev

子プロセスで Vite の開発サーバーを起動し、それを指すネイティブウィンドウをアタッチします。React Fast Refresh と HMR は通常どおり動作し、編集して保存するとウィンドウが更新されます。config.devPort(デフォルトは 5178)で実行され、そのポートが使用中の場合は自動的にインクリメントされます。

murasaki build

本番用の Vite ビルド → dist/client

murasaki bundle

dist/client + コンパイル済みのサーバーアクションレジストリ + ポータブルな Node ランタイム + ネイティブランチャーバイナリを dist/bundle/ にパッケージングします — macOS では <productName>.app、Windows では <productName>.exe を含む <productName>/ フォルダー、Linux では AppDir と .AppImage になります。

murasaki bundle                       # ホストのプラットフォーム + アーキテクチャ、未署名
murasaki bundle --arch x64            # クロスアーキテクチャ(macOS): Apple Silicon 上で x64 の .app
murasaki bundle --target win32-arm64  # クロスターゲット: arm64 の Windows バンドル
murasaki bundle --target linux-x64    # Linux AppDir + AppImage
murasaki bundle --sign                # macOS Developer ID / Windows Authenticode 署名
murasaki bundle --no-build            # 既存の dist/client を再利用する
  • --arch arm64|x64 / --target <platform>-<arch> — 対象アーキテクチャ / プラットフォーム(デフォルトはホスト)。darwin-arm64darwin-x64win32-x64win32-arm64linux-x64linux-arm64 を指定できます。
  • --sign — macOS では .app を Developer ID で署名し、Windows ではポータブル ZIP の作成前にアプリの実行ファイルを Authenticode で署名し、Linux では生成された .AppImage に GPG 署名します。Windows での署名は SignTool がある Windows 上で実行する必要があります。詳しくは 配布を参照してください。
  • --no-builddist/client がすでに存在する場合、Vite の再ビルドをスキップします。

murasaki installer

bundle の出力を、対象プラットフォーム向けの配布可能なインストーラーに変換します。macOS ではドラッグインストール用のスタイル付き .dmgdist/<productName>-<version>.dmg。Finder のスタイル適用に失敗した場合はプレーンな DMG にフォールバックします)、Windows では NSIS の .exe、さらに内蔵の自動更新機能が無効な場合のみ MSI の .msi、Linux では .deb を生成します。ポータブルな Windows 用 ZIP は bundle の出力です。Linux の AppDir と .AppImagebundle の出力として残ります。

murasaki installer                     # ホストプラットフォーム向けインストーラ(最初に再バンドル)
murasaki installer --target win32-x64  # Windows x64 のインストーラ
murasaki installer --target linux-x64  # Linux amd64 の .deb とバンドル
murasaki installer --sign --notarize   # macOS: Developer ID 署名 + 公証 + ステープル
murasaki installer --target win32-x64 --sign # Windows: app + 生成されたinstallerを署名
murasaki installer --no-build          # 既存の dist/bundle を再利用する
  • --target <platform>-<arch> / --arch arm64|x64bundle に転送されます。
  • --sign — macOS では Developer ID、Windows では Authenticode、Linux では GPG による署名を行います。Windows ではアプリの実行ファイルと生成されたすべてのインストーラーに署名・検証を行います。自動更新が有効なビルドではユーザーごとの NSIS が必須となり、MSI はスキップされます。Linux では .AppImage.deb、まとめた SHA256SUMS に GPG 署名します。詳しくは 配布の「GPG 分離署名」の項を参照してください。
  • プラットフォームのパッケージングツールがインストーラーを1つも生成できなかった場合、コマンドは失敗します。ポータブル ZIP や AppImage が目的の出力であれば murasaki bundle を使用してください。
  • --notarize — macOS のみ。署名済みの .dmg を Apple の公証サービスに提出し、チケットをステープルします(--notarize の使用には --sign が必須です)。

murasaki demo

パッケージ済みの macOS 開発者プレビューを1コマンドで取得して起動します。Apple silicon と Intel のどちらかを自動選択し、公開済みの SHA-256 と厳密な ad-hoc コード署名でリリースアセットを検証してキャッシュした後、はじめて隔離属性を解除します。

pnpm dlx murasaki@latest demo papelle
pnpm dlx murasaki@latest demo oscilla
pnpm dlx murasaki@latest demo orglia
  • murasaki demo --list で利用可能なプレビューを一覧表示します。
  • --refresh で検証済みキャッシュを使わず、再ダウンロードします。
  • --no-open でアプリを起動せず、取得と検証だけを実行します。
  • 名前を省略して murasaki demo を実行すると、パッケージ済みのデフォルトの create-murasaki スキャフォールドを起動します。

これらは CLI 利用者向けの ad-hoc 署名済み開発者プレビューであり、公証済みの一般ユーザー向けダウンロードではありません。本番アプリは、公開者自身が署名・公証してください。

murasaki init

rustc の有無を確認し、見つからない場合はインストールコマンドを表示します。@murasakijs/native 自体をいじる場合にのみ必要です。Murasaki のエンドユーザーが Rust を必要とすることは決してありません — ビルド済みバイナリが npm から降ってきます。

murasaki icon

murasaki icon assets/logo.png

1つの正方形の 1024px PNG からプラットフォーム向けのアイコンリソースを生成します。フル版の Xcode がインストールされた macOS では、AppIcon アセットを収めた Assets.caricon.icns を出力します。現在の macOS はアセットカタログ側で OS のマスクと外観のレンダリングを適用し、.icns は古い macOS やツール向けのフォールバックとして残ります。Command Line Tools のみの環境では警告を表示したうえで .icns フォールバックを生成します。macOS 以外では現時点で PNG のみに対応しています。

通常、このコマンドを直接実行する必要はありません。murasaki bundleconfig.icon から同じリソースを自動生成し、埋め込みます。macOS の角丸マスクを元画像に焼き込まないでください。正方形のデザインを渡し、アセットカタログ版へのマスク適用は OS に任せます。Windows では .ico を生成して .exe に埋め込みます。

murasaki release

murasaki release --keygen [--force]
murasaki release --manifest --base-url <url> --version <v> [--notes <md>] [--mandatory] [--rollout <0-100>]
murasaki release --sign

署名付き自動更新を公開するための、3つの独立したモードです — 全体の流れについては 自動更新 ガイドを参照してください。

  • --keygen — 更新マニフェストの署名に使う Ed25519 の鍵ペアを生成します。.murasaki/update-key.pub(コミットしてください)と .murasaki/update-key(モード 0600、自動的に gitignore されます)を書き出します。秘密鍵は表示せず、MURASAKI_UPDATE_KEY という GitHub シークレットに標準入力経由で登録する手順を案内します。--force を指定しない限り、既存の鍵を上書きすることはありません。
  • --manifestdist/ 配下からこのバージョンの成果物(macOS の .app.zip、Windows の -setup-<arch>.exe(win32-x64 では接尾辞なしの旧 -setup.exe も認識されます)、Linux の -linux-<arch>.AppImage)を探し、見つかったものをハッシュ化して、generatedAt タイムスタンプ付きの dist/latest.json を書き出します。Linux の .deb は、システムのパッケージマネージャーが更新を管理するため、意図的に更新ペイロードへ含めていません。見つからないターゲットはエラーにならずスキップされます。--rollout <0-100> は、任意の段階的ロールアウト率(%)を書き込みます。
  • --signdist/latest.json に署名して dist/latest.json.sig を生成します。鍵は $MURASAKI_UPDATE_KEY、なければ .murasaki/update-key から読み込まれます。.murasaki/update-key.pub が利用可能な場合は、keyId のローテーションヒントもマニフェストに書き込みます。

--generate-manifest は、--manifest の非推奨エイリアスとして引き続き動作します。

次へ

GitHub でこのページを改善

On this page