Skip to content

コントリビューション ​

lh-ui-plus へのコントリビュートを歓迎します!このドキュメントではコントリビューションの流れを詳しく説明します。

前提条件 ​

  • Node.js 18+
  • pnpm による依存関係のインストール
  • Git の基本操作

依存関係のインストール ​

bash
git clone https://github.com/lhgb-top/lh-ui-plus.git
cd lh-ui-plus
pnpm install

開発の流れ ​

1. 開発サーバーを起動する ​

bash
pnpm dev

2. テストを実行する ​

bash
pnpm test:unit      # Core 層のユニットテスト
pnpm test:components  # コンポーネントの統合テスト
pnpm test            # すべてのテスト

3. 型チェック ​

bash
pnpm typecheck

4. リント ​

bash
pnpm lint
pnpm lint:fix       # 自動修復

5. ビルド ​

bash
pnpm build

6. ドキュメントを確認する ​

bash
pnpm docs:dev

コンポーネントの追加 ​

完全な流れは AGENTS.md の「Adding or changing a component」節を参照してください。

簡単なステップ:

  1. @lh-ui/share の src/core/<name>/ — コアロジック + ユニットテスト(share リポジトリで完了し、本リポジトリは npm 依存として消費する)
  2. packages/components/<name>/ — Vue コンポーネントのラップ
  3. packages/components/index.ts — lhComponents への登録
  4. src/index.ts — エクスポートの更新
  5. tests/unit/components-registry.spec.ts — 期待値配列の更新
  6. tests/components/<name>.spec.ts — コンポーネントテスト
  7. docs/components/<name>.md — ドキュメントページ
  8. docs/.vitepress/config.ts — サイドバーナビゲーション

検証コマンド:

bash
pnpm lint          # 0 errors, 0 warnings
pnpm typecheck     # 出力なし
pnpm vitest run    # すべてのテストケースが通過
pnpm docs:build    # 通過

ドキュメントサイトのデプロイ ​

ドキュメントサイトのデプロイパスは docs/.env.production で一元管理されています(単一のデータソース)。本番ビルドはシンプルです:

bash
pnpm docs:build
環境変数説明デフォルト値例
DOCS_BASEサイトの base パス。先頭と末尾にスラッシュが必須//lhui/vue3/
DOCS_HOSTNAMEサイトの正規ドメイン。sitemap と SEO meta に使用https://www.lhgb.tophttps://your-site.com

これら 2 つの変数は、リソースパス、sitemap、og:url などの SEO タグ、そしてビルドの最後に再生成される robots.txt に同時に作用します。

なぜインライン変数ではなく .env に置くのか:Vite に内蔵された env の読み込みはユーザー config の評価より後に行われるため、docs/.vitepress/config.ts は明示的に loadEnv を呼ばないと本番ビルド時にこれらの値を読み取れません。さらに Windows Git Bash の MSYS はインラインの DOCS_BASE=/lhui/vue3/ をローカルの絶対パスに自動変換してしまいます。一時的な上書きにはインライン変数も使えます(DOCS_BASE=/xxx/ pnpm docs:build)が、日常のデプロイでは .env.production を変更する方が安全です。

統一リリースプレフィックスの约定 ​

風黙ポータル(www.lhgb.top)の LH-UI コンポーネントライブラリナビゲーションページ(/ui)は、/lhui/{ライブラリ名}/ という統一约定で各コンポーネントライブラリのドキュメントサイトのデプロイパスを管理しており、フレームワーク名には縛られません。本ライブラリ(Vue 3 版)は /lhui/vue3/ にデプロイされています(docs/.env.production に記載)。本番ビルドコマンド:

bash
pnpm docs:build

ビルド産物はサーバーの /home/webuser/nginx/lh-ui/vue3/ にアップロードされます(Nginx location スニペットの権威ある参考コピーは ファミリーの docs/部署/nginx-lhui.conf.md にあり、本番の実体はサーバーの /etc/nginx/conf.d/nginx.conf にあります)。ファミリーの 8 サイトはすべてこの约定に従ってデプロイされています:

リポジトリbasealias ディレクトリcleanUrls
lh-ui-plus(本ライブラリ)/lhui/vue3//home/webuser/nginx/lh-ui/vue3/否
lh-ui-vue2/lhui/vue2//home/webuser/nginx/lh-ui/vue2/否(VuePress 1.x)
lh-ui-react/lhui/react//home/webuser/nginx/lh-ui/react/否
lh-ui-uniapp/lhui/uniapp//home/webuser/nginx/lh-ui/uniapp/是
lh-ui-android/lhui/android//home/webuser/nginx/lh-ui/android/是
lh-ui-ios/lhui/ios//home/webuser/nginx/lh-ui/ios/是
lh-ui-harmony/lhui/harmony//home/webuser/nginx/lh-ui/harmony/是
lh-ui-windows/lhui/windows//home/webuser/nginx/lh-ui/windows/是

ネイティブ血脈の 4 サイト(android / ios / harmony / windows)は VitePress サイト内に組み込まれた静的 HTML シミュレーターで、デプロイ方式は web 血脈の 4 サイトと完全に同じです。新しいライブラリも同様に /lhui/{ライブラリ名}/ に従って location と .env.production をそれぞれ拡張します。

cleanUrls サイト(uniapp およびネイティブ 4 端)の Nginx try_files には必ず $uri.html を含める必要があります。そうしないと拡張子なしの URL が 事前レンダリングされた .html を取得できません。非 cleanUrls サイトではこの記述は不要です。詳細は参考コピーの「三つの約定」節を参照してください。

コード規範 ​

  • CSS クラスには lh- プレフィックスを使用する(例:lh-button__text--primary)
  • Composables には必ず Lh プレフィックスを使用する(例:useLhConfigProvider)
  • 定数オブジェクトには必ず大文字のスネークケースを使用する(例:LH_TYPES_CONST)
  • パスエイリアス:~/* → packages/*(本リポジトリ)。フレームワーク非依存のロジックとスタイルは @lh-ui/share にあり、npm のサブパスインポートで取得する(@lh-ui/share/core/*、@lh-ui/share/styles/*)
  • フォーマット:シングルクォート、セミコロンなし、2 スペースインデント、100 文字の行幅

コミット規範 ​

feat: Select ドロップダウンコンポーネントを追加
fix: Input のフォーカス消失問題を修正
docs: インストールドキュメントを更新
test: Button の境界値テストを追加
refactor: ConfigProvider のリアクティブロジックをリファクタリング

AI 支援の約定 ​

本プロジェクトは AI agent による支援を受けてメンテナンスされています。検証コマンドはユーザーが手動で実行し、AI が自動的にテスト/ビルドを実行することはありません。

国風の美で、コードの基を築く