Skip to content

貢献ガイド

技術スタックと背景情報

このプロジェクトのツールチェーンとランタイムの概要を紹介します

プロジェクト全体では以下を使用しています:

  • Node.js >=20。コアライブラリのベース環境。
  • Electron 29。ランチャーの実際のランタイム。
  • pnpm。モノレポのパッケージ管理に使用。
  • TypeScript。プロジェクト全体でできるだけTypeScriptを使用しています。

メインプロセス(Electron)では:

  • esbuild。メインプロセスのTypeScriptをビルドするために使用しています。

レンダラー側、つまり純粋なフロントエンドでは:

  • Vue。ユーザーインターフェースの構築に使用。
  • Vite。ビルドシステムとして使用。
  • Vuetify。コンポーネントライブラリとして使用。
  • Vue Composition API。Vue 2向けのコンポジショナルAPIのブリッジ。VuetifyがVue 3にアップグレードされると、Vueもアップグレードされ、これは削除される予定です。

プロジェクト構造と設計

diagram

詳細な設計についてはAsk DeepWikiをご覧ください。90%のケースをカバーしています!

貢献する

プロジェクトを開くにはVSCodeの使用を強く推奨します。

始め方

クローン

サブモジュールフラグ--recurse-submodulesを使ってプロジェクトをクローンします。

bash
git clone --recurse-submodules https://github.com/Voxelum/x-minecraft-launcher

--recurse-submodulesフラグを追加し忘れた場合は、gitサブモジュールを手動で初期化・更新する必要があります。

bash
git submodule init
git submodule update

インストール

pnpmを使ってプロジェクトをインストールします:

pnpm install
中国国内での依存関係(ElectronなどのようなもPの)インストールが遅い問題の解決策

gitバッシュを開き、pnpm iの前にregistry=https://registry.npm.taobao.org electron_mirror="https://npm.taobao.org/mirrors/electron/"を追加します。Alibabaが提供する国内のnpmおよびElectronミラーを使用します。

最終的に入力するコマンドは

bash
registry=https://registry.npm.taobao.org electron_mirror="https://npm.taobao.org/mirrors/electron/" pnpm i

環境変数の設定

xmcl-electron-appの下に.envファイルを作成してCURSEFORGE_API_KEYを設定する必要があります。この.envファイルは.gitignoreファイルに追加されています。

注意点

CURSEFORGEのAPIキーを漏らさないでください

ランチャーを起動する

これでランチャーを実行できます

VSCode利用者向け

実行とデバッグセクションに移動し、Electron: Main (launch)プロファイルを使用してelectronを起動します。(ホットキーF5)

VSCode以外の利用者向け

ターミナルを一つ開き

bash
# UIのためにdevサーバーを開始
npm run dev:renderer

別のターミナルを開き

bash
# メインプロセスコードの監視を開始
npm run dev:main

コードの「ホット」変更

コードを変更した場合、その変更を実行中のランチャーインスタンスに更新する方法です。

ブラウザプロセスの場合

Viteはホットリロードを提供しているので、自動的に更新されるはずです。何か問題が発生した場合は、Ctrl+Rでブラウザを更新できます。

メインプロセスの場合

VSCodeを使用してランチャーを起動している場合、コードを変更した後、VSCodeデバッガーの再読み込みボタンを押すことができます。

VSCodeを使用して起動していない場合、Electronは自動的に閉じて再読み込みします。

ランチャーコアの問題を発見した場合

ランチャーコアはTypeScriptで書かれた別プロジェクトにあります。

関連する問題を特定した場合は、そちらで問題を開いてください。

VSCodeデバッガー

プロジェクトにはVSCodeデバッガー設定が含まれています。行にブレークポイントを追加してデバッグできます。現在、VSCodeデバッガーの方法はメインプロセスのデバッグのみをサポートしています。

(レンダラープロセスにはChrome Devtoolsを使用できます)

現在、2つのオプションがあります:

  1. Electron: Main (launch)
  2. Electron: Main (attach)

最初のオプションを使って起動すると、自動的にデバッガーがインスタンスにアタッチされます。

コードのコミット

このプロジェクトはコンベンショナルコミットに従っています。簡単に言えば、コミットメッセージの最初の行は次のようになります:

commit type: commit description

利用可能なコミットタイプは:featfixrefactorstyledocschoretestがあります。

このgistを参考にすると:

feat: (ユーザー向けの新機能。ビルドスクリプトの新機能ではない)

fix: (ユーザー向けのバグ修正。ビルドスクリプトの修正ではない)

docs: (ドキュメントの変更)

style: (フォーマットや、セミコロンの欠落など;実際のコード変更はない)

refactor: (実際のコードのリファクタリング。変数名の変更など)

test: (欠落しているテストの追加、テストのリファクタリング;実際のコード変更はない)

chore: (gruntタスクの更新など;実際のコード変更はない)

これらのルールに従わないと、コミットは拒否されます。

ビルド方法

現在のランチャーは、ビルドするために2つのコマンドを実行する必要があります

まず、フロントエンドコードをビルドする必要があります:

bash
pnpm build:renderer

xmcl-keystone-uiの下のコードが変更されていない限り、これを再度ビルドする必要はありません。

次に、先ほどビルドしたフロントエンドを同梱してElectronをビルドできます:

bash
pnpm build