Pake 入門:任意の Web サイトをデスクトップアプリにする

tw93/Pake のインストール、コマンドラインでのパッケージ化、カスタムアイコンとウィンドウサイズ、ローカル開発、ビルドコマンドを整理する。よく使う Web サイトを軽量デスクトップアプリに包む用途に向いている。

Pake は Tauri を使い、リモートページ、ローカル HTML、静的サイトのディレクトリを macOS、Windows、Linux 向けデスクトップアプリに包みます。重要なのは pake URL を覚えることではありません。Node、Rust、各 OS のビルド依存関係を確認し、ログイン、リダイレクト、ダウンロード、デバイスアクセスがシステム WebView 内でも動くかを実機で検証することです。

プロジェクトアドレス:

https://github.com/tw93/Pake

簡単な結論

  • Node.js 22の使用を推奨し、最低要件18;CLIビルドはRust 1.85+も必要です。
  • 最初のビルドは依存関係をダウンロード・コンパイルしますが、これは後のビルドよりも明らかに遅くなります。待ち時間をフリーズと誤解しないでください。
  • 自動化またはエージェント通話を含めるべきです--json成功を判断するために自然言語のログを照合して判断しないでください。
  • Pakeは埋め込みWebView、サードパーティクッキー、SSO、ブラウザ拡張機能のウェブサイト制限を回避できません。

環境を確認してPake CLIをインストールしてください

まずはバージョンを確認してください:

1
2
3
4
node --version
npm --version
rustc --version
cargo --version

Nodeが18未満、またはRustが1.85未満の場合は、まず環境をアップグレードしてください。推奨されるインストールコマンド:

READMEは以下のコマンドを提供します:

1
pnpm install -g pake-cli

npmを直接使うこともできます:

1
npm install -g pake-cli

インストール後は、現在の端末が意図したバージョンを見つけたことを確認する必要があります:

1
2
pake --version
pake --help

グローバルインストール中に権限の問題が発生した場合は、まずそれを使えますnpx pake-cli [url] [options]管理者権限を直接使ってシステムのNodeディレクトリを上書きしないでください。

公開ページで最初のパッケージを作る

GitHubをデスクトップアプリケーションとしてパッケージ化する:

1
pake https://github.com --name "GitHub"

Pakeはデフォルトで現在のディレクトリに製品を書き込みます。最初の実行ではRustやプラットフォームコンポーネントをインストールすることがあります。コマンド終了後はログを見るだけでなく、出口コードと実際のインストールパッケージを確認してくださいsuccess

自動化された環境では、構造化出力の使用を推奨します:

1
pake https://github.com --name "GitHub" --json

標準的な出力は解析可能なJSONであるべきです。ゼロでない出口、JSONの解析失敗、またはJSONにプロダクトパスがない場合はすべてビルド失敗とみなすべきです。

カスタムアイコン、ウィンドウ、ターゲットプラットフォーム

READMEはより完全な例を提供しています:

1
pake https://weekly.tw93.fun --name Weekly --icon https://cdn.tw93.fun/pake/weekly.icns --width 1200 --height 800 --hide-title-bar

プラットフォームの違いに注目してください:

  1. --hide-title-barmacOSでしか利用できません。
  2. Windows/Linuxの隠れたシステム装飾の使用--hide-window-decorations
  3. --targetsDMG、AppImage、DEB、RPM、またはターゲットアーキテクチャを選択し、現在のシステムに応じて特定の利用可能な値を設定します。
  4. アイコンはローカルまたはリモートファイルで、Pakeはそれをプラットフォーム形式に変換します。ダウンロードに失敗した場合は、ネットワークの問題を解消するためにローカルファイルを使用してください。

例えば、macOSはテストしやすいものしか生成しません.app

1
PAKE_CREATE_APP=1 pake https://example.com --name "Example"

Linuxパッケージ AppImage:

1
pake https://example.com --name "Example" --targets appimage

すべてのプラットフォームインストールパッケージが設定なしで1つのシステム上で生成できると想定しないでください。クロスアーキテクチャビルドには対応するRustターゲットやシステムツールチェーンも必要です。

ローカル静的サイトのパッケージ化

ペイクは直接インクルージョンを受け取ることができますindex.htmlビルドディレクトリ:

1
2
npm run build
pake ./dist --name "MyTool" --json

ディレクトリに入ると、完全なファイルツリーがパッケージ化されます。HTMLファイルと隣接するリソースをコピーする必要がある場合は、公式の指示に従うべきです--use-local-file

1
pake ./my-app/index.html --name "MyApp" --use-local-file

ローカルSPA向けのハッシュルーティングは直接動作可能です。ヒストリーモードルーティングは通常のウェブサーバーと同等ではありません。ディープパスリフレッシュは実際にテストが必要です。

設定ファイルで再現可能なビルドを作る

パラメータが多い場合、JSON構成を使うことで、長文コマンドを繰り返しコピーするよりも監査が容易になります。

1
pake --config app.json --json

ハンドルapp.jsonバージョン管理を含めますが、ウェブサイトのログインクッキー、トークン、内部一時アドレスの作成は控えてください。ビルドレコードは少なくともPakeバージョン、Nodeバージョン、Rustバージョン、ターゲットプラットフォーム、製品チェックサムを保持すべきです。

インストーラーだけでなくデスクトップアプリを検証する

ビルドプロダクトをインストールまたは開いた後、実際のウェブサイトの利用状況に応じてアイテムごとに確認してください:

  1. メイン画面が正しく読み込まれ、証明書やプロキシはエラーを報告しません。
  2. ログイン後、アプリを再起動し、セッションが期待通りに保持されているか確認します。
  3. 外部リンクがアプリケーション内で開かれているか、システムブラウザで開かれているかがセキュリティ境界に適合しているか。
  4. ファイルのアップロード、ダウンロード、クリップボード、ドラッグ&ドロップが正常に動作するかどうか。
  5. ショートカット、ウィンドウのスケーリング、システムトレイはウェブページ自体と競合しません。

ビデオ会議サイトの場合、macOSでは明確な許可宣言も求められます:

1
pake https://meet.example.com --name "Meet" --camera --microphone

これらのパラメータは、ウェブサイトが常にWebViewのログインやデバイスアクセスを許可することを保証するものではありません。アプリケーションに対して適切な権限宣言を追加するだけです。

ログイン、SSO、リダイレクトの失敗の確認方法

まずはデバッグモードで再構築してください:

1
pake https://app.example.com --name "ExampleDebug" --debug

開発者ツールを開いてコンソールとネットワークを表示してください。一般的な境界線には以下が含まれます:

  • アイデンティティプロバイダーは埋め込みWebViewを拒否します。
  • サードパーティクッキーやクロスオリジンストレージは制限されています。
  • OAuthコールバックは別のドメイン名にジャンプし、そのドメイン名はデフォルトでシステムブラウザに割り当てられます。
  • ウェブサイトはブラウザ拡張機能や複数のタブに依存しています。

信頼できるSSOドメインを維持する必要がある場合は、それを評価できます--safe-domain

1
pake https://app.example.com --name "Example" --safe-domain app.example.com,login.example.com

すべてのリンクをアプリ内に強制的に残すために過度に広範なドメイン名ルールを使わないでください。SSOサービスが明示的にWebViewを拒否した場合、ナビゲーション範囲をさらに拡大しても問題は解決しません。

ビルド失敗を順番に切り分ける

ステージ 典型的な現象 取り扱い方法
CLIが見つかりません pake: command not found npm/pnpmグローバルビンがPATHに入っているか、またはPATHを使っているかを確認してくださいnpx pake-cli
錆の初期化失敗 見つかりませんrustcタイムアウトをダウンロード Rustを別途インストールし、端末を再起動してバージョンを確認してください
プラットフォーム依存性が欠如 Tauri bundler、WebKitGTK、またはパッカーエラー 現在のシステムをインストールするために必要な依存関係;pake-cli を繰り返し再インストールしないでください
アイコン処理の失敗 ダウンロード失敗、フォーマット変換の失敗 ローカルのPNG/ICO/ICNSに切り替え、その後ネットワークを別途検証
ウェブサイトの白い画面 成功裏に構築されましたが、実行時にコンテンツが出ません 利用状況--debugCSP、証明書、JS、WebViewとの互換性を確認
ログインループ ログインに成功した後、エントリーに戻ってください クッキー、コールバックドメイン名、アイデンティティプロバイダーのWebViewポリシーを確認してください

最小構成の動作確認に戻す

トラブルシューティングの際は、まず失敗したコマンドとバージョン出力を保持し、その後最もシンプルな公開URLに戻してください。

1
2
3
4
pake --version
node --version
rustc --version
pake https://example.com --name "PakeSmokeTest" --json

最小サンプルが成功すれば、ツールチェーンは基本的に正常であり、問題はターゲットのウェブサイトやアイコン、追加のパラメータにある可能性が高いということです。その後、一度に一つのオプションだけを追加してください。最小サンプルでも失敗した場合は、Node、Rust、またはプラットフォームの依存関係を扱います。

CLIのアップグレード後に回帰が発生した場合は、旧製品を上書きしないでください。現在のバージョンを記録し、同じスモークテストをアイソレーションディレクトリで再構築します。新旧バージョンの違いが再現可能な場合にのみ、CLI回帰が判定されます。

Pake 本体をローカル開発する

Pake自体を改造したい場合は:

1
pnpm i

地域開発:

1
pnpm run dev

建築用途:

1
pnpm run build

Pake自体を開発することは、CLIを使うのと同じ道ではありません。公式の推奨はNode.js 22で、Rust 1.85+が必要です。ウェブページをカプセル化したいだけの一般ユーザーは、これら3つのコマンドを実行するためにリポジトリのクローンをする必要はありません。

公開前の受け入れ確認

他者に投稿する前に、クリーンなアカウントまたはテストマシンで以下のチェックを行う必要があります:

  1. --json成功裏に返品し、製品道が真に存在します。
  2. インストール、起動、終了、アンインストールはすべて正常に動作します。
  3. ログイン、コールバック、アップロード/ダウンロード、バックリンクの挙動が期待通りであること。
  4. 内部トークン、クッキー、デバッグエントリポイントがアプリケーションに導入されていない。
  5. 記録ペーク、ノード、Rustバージョン、ターゲットアーキテクチャ。
  6. 新しいウェブサイトやCLIが元に戻った際に復元できるように、以前の有効なインストールパッケージを保持すること。

Pakeはドキュメントステーションや監視パネル、固定されたウェブツールには優れていますが、フルブラウザとは違います。まずはそれを使いましょう--debugそして、対象のウェブサイトがWebViewに適していることを証明するための最小限のスモークテストを行い、「インストールパッケージは正常に生成されたがアプリケーションは使用不能」という誤った完了を避けるために、アイコン、トレイ、ウィンドウ、権限をカスタマイズします。