Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Add support for consumer side customization of the actual astro config

オープン
#216 コメント 1 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
42/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
typescript

調査の方向性

cli/setFsRootDir.ts:17-19 と cli/cli.ts:138-141 から始め、start、build、preview、その他の CLI コマンドがプログラム API をどのように呼び出しているかを追跡します。オプションの consumer config を base config とどのようにマージするかを、優先順位と型のサポートを含めて定義します。既存のデフォルト値が変更されず、一覧にあるすべてのコマンドが文字列操作なしでカスタマイズをサポートすれば完了です。

索引モデルが issue の本文から書いたものです。

説明

enhancement PF Team

Problem Summary

Consumers cannot customize the Astro configuration from their side. The framework uses a hardcoded astro.config.mjs file within the doc-core package, preventing users from:

  • Adding custom Astro integrations
  • Modifying Vite configuration for their specific needs
  • Changing the deployment adapter (currently hardcoded to Cloudflare)
  • Customizing build settings, output options, or other Astro configurations

Current limitation: While users can customize content via pf-docs.config.mjs, they cannot modify the actual Astro config without forking doc-core and requesting npm releases.

Use Cases

Consumers need to customize Astro config for:

  1. Deployment targets: Different hosting platforms (AWS, Netlify, Vercel) require different adapters
  2. Vite configuration: Custom resolve aliases, plugins, or build optimizations
  3. Integrations: Adding sitemap, analytics, or other Astro integrations
  4. Performance tuning: Customizing bundle splitting, compression, or caching strategies
  5. Environment-specific settings: Different configs for dev/staging/production

Current Architecture

The CLI currently modifies the Astro config via string replacement in setFsRootDir() (cli/setFsRootDir.ts:17-19), which is brittle and doesn't support general user customization.

// cli/cli.ts:138-141
await build({
  root: astroRoot,
  outDir: docsOutputDir,
})

The CLI invokes Astro's programmatic API with the hardcoded astroRoot config location. Consumers have no way to inject or merge their own configuration.

Completion Criteria

The issue is resolved when:

  1. User config file supported: Consumers can create an optional Astro config file that gets merged with the base config
  2. Configuration merging: User config is properly merged with doc-core's base config
  3. Backward compatibility: Existing setups without user config continue to work with default behavior
  4. Clear precedence rules: Documentation clearly explains which config values take precedence (user overrides vs. base defaults)
  5. Type safety: User config gets proper TypeScript support and validation
  6. All CLI commands supported: Config merging works for start, build, preview, and other commands
  7. No string manipulation: Replace the brittle string replacement approach in setFsRootDir() with proper config merging

Technical Notes

  • Astro 5.4.0+ supports mergeConfig() for configuration merging (docs)
  • The CLI already uses Astro's programmatic API (build(), dev(), preview())
  • inlineConfig parameter in programmatic API allows config override
  • File locations: cli/cli.ts:138-141, cli/setFsRootDir.ts
  • Current string replacement hack: cli/setFsRootDir.ts:17-19

Related Links

主要言語
TypeScript
スター
3
フォーク
11
平均マージ
4日 18時間
マージ済み PR(30日)
2

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

patternfly/patternfly-doc-core のほかの issue

patternfly/patternfly-doc-core の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。