コントリビューション
lh-ui-plus へのコントリビュートを歓迎します!このドキュメントではコントリビューションの流れを詳しく説明します。
前提条件
- Node.js 18+
- pnpm による依存関係のインストール
- Git の基本操作
依存関係のインストール
git clone https://github.com/lhgb-top/lh-ui-plus.git
cd lh-ui-plus
pnpm install開発の流れ
1. 開発サーバーを起動する
pnpm dev2. テストを実行する
pnpm test:unit # Core 層のユニットテスト
pnpm test:components # コンポーネントの統合テスト
pnpm test # すべてのテスト3. 型チェック
pnpm typecheck4. リント
pnpm lint
pnpm lint:fix # 自動修復5. ビルド
pnpm build6. ドキュメントを確認する
pnpm docs:devコンポーネントの追加
完全な流れは AGENTS.md の「Adding or changing a component」節を参照してください。
簡単なステップ:
@lh-ui/shareのsrc/core/<name>/— コアロジック + ユニットテスト(share リポジトリで完了し、本リポジトリは npm 依存として消費する)packages/components/<name>/— Vue コンポーネントのラップpackages/components/index.ts—lhComponentsへの登録src/index.ts— エクスポートの更新tests/unit/components-registry.spec.ts— 期待値配列の更新tests/components/<name>.spec.ts— コンポーネントテストdocs/components/<name>.md— ドキュメントページdocs/.vitepress/config.ts— サイドバーナビゲーション
検証コマンド:
pnpm lint # 0 errors, 0 warnings
pnpm typecheck # 出力なし
pnpm vitest run # すべてのテストケースが通過
pnpm docs:build # 通過ドキュメントサイトのデプロイ
ドキュメントサイトのデプロイパスは docs/.env.production で一元管理されています(単一のデータソース)。本番ビルドはシンプルです:
pnpm docs:build| 環境変数 | 説明 | デフォルト値 | 例 |
|---|---|---|---|
DOCS_BASE | サイトの base パス。先頭と末尾にスラッシュが必須 | / | /lhui/vue3/ |
DOCS_HOSTNAME | サイトの正規ドメイン。sitemap と SEO meta に使用 | https://www.lhgb.top | https://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 に記載)。本番ビルドコマンド:
pnpm docs:buildビルド産物はサーバーの /home/webuser/nginx/lh-ui/vue3/ にアップロードされます(Nginx location スニペットの権威ある参考コピーは ファミリーの docs/部署/nginx-lhui.conf.md にあり、本番の実体はサーバーの /etc/nginx/conf.d/nginx.conf にあります)。ファミリーの 8 サイトはすべてこの约定に従ってデプロイされています:
| リポジトリ | base | alias ディレクトリ | 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 が自動的にテスト/ビルドを実行することはありません。