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-arm64、darwin-x64、win32-x64、win32-arm64、linux-x64、linux-arm64 を指定できます。
  • --sign — macOS では .app を Developer ID で署名し、Windows ではポータブル ZIP の作成前にアプリの実行ファイルを Authenticode で署名し、Linux では生成された .AppImage に GPG 署名します。Windows での署名は SignTool がある Windows 上で実行する必要があります。詳しくは 配布を参照してください。
  • --no-build — dist/client がすでに存在する場合、Vite の再ビルドをスキップします。

murasaki installer

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

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|x64 — bundle に転送されます。
  • --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.car と icon.icns を出力します。現在の macOS はアセットカタログ側で OS のマスクと外観のレンダリングを適用し、.icns は古い macOS やツール向けのフォールバックとして残ります。Command Line Tools のみの環境では警告を表示したうえで .icns フォールバックを生成します。macOS 以外では現時点で PNG のみに対応しています。

通常、このコマンドを直接実行する必要はありません。murasaki bundle が config.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 を指定しない限り、既存の鍵を上書きすることはありません。
  • --manifest — dist/ 配下からこのバージョンの成果物(macOS の .app.zip、Windows の -setup-<arch>.exe(win32-x64 では接尾辞なしの旧 -setup.exe も認識されます)、Linux の -linux-<arch>.AppImage)を探し、見つかったものをハッシュ化して、generatedAt タイムスタンプ付きの dist/latest.json を書き出します。Linux の .deb は、システムのパッケージマネージャーが更新を管理するため、意図的に更新ペイロードへ含めていません。見つからないターゲットはエラーにならずスキップされます。--rollout <0-100> は、任意の段階的ロールアウト率(%)を書き込みます。
  • --sign — dist/latest.json に署名して dist/latest.json.sig を生成します。鍵は $MURASAKI_UPDATE_KEY、なければ .murasaki/update-key から読み込まれます。.murasaki/update-key.pub が利用可能な場合は、keyId のローテーションヒントもマニフェストに書き込みます。

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

次へ

GitHub でこのページを改善

On this page