ビルドスクリプトのパス解決方法を改善し、Pro版パッケージへのファイル配置を修正

shoelace-style/webawesome

Web Awesome 3.2.1では、ビルドスクリプトのパス解決ロジックを改善し、Pro版パッケージに llms.txtdist/skills ディレクトリが正しく含まれるようになりました。相対パスによるディレクトリ指定を共通のユーティリティ関数に置き換えることで、ビルド環境の違いによる出力先の不一致を解消しています。

背景

これまでビルドスクリプトでは path.resolve(__dirname, '../dist') のような相対パス指定で出力先ディレクトリを決定していました。この方法では、スクリプトの実行場所やビルドプロセスの違いによって、ファイルが意図したディレクトリに配置されないケースがありました。特にPro版パッケージのビルド時に、AIツール向けのドキュメントファイル(llms.txt)やエージェントスキルファイル(dist/skills)が出力先に含まれない不具合が発生していました。

技術的な変更

scripts/agent-skill.jsscripts/llms.js の2つのビルドスクリプトで、パス解決方法が統一されました。

変更前(agent-skill.js):

const {
  outdir = path.resolve(__dirname, '../dist/skills/webawesome'),
  copyTo = [path.resolve(__dirname, '../dist-cdn/skills/webawesome')],
  docsDir = path.resolve(__dirname, '../docs'),
  siteDir = path.resolve(__dirname, '../_site'),
  cemPath = path.resolve(__dirname, '../dist-cdn/custom-elements.json'),
  baseUrl = 'https://webawesome.com',
} = options;

変更後(agent-skill.js):

import { getCdnDir, getDistDir, getDocsDir, getSiteDir } from './utils.js';

const {
  outdir = path.join(getDistDir(), 'skills/webawesome'),
  copyTo = [path.join(getCdnDir(), 'skills/webawesome')],
  docsDir = getDocsDir(),
  siteDir = getSiteDir(),
  cemPath = path.join(getCdnDir(), 'custom-elements.json'),
  baseUrl = 'https://webawesome.com',
} = options;

scripts/llms.js でも同様の変更が適用されています。__dirname を起点とした相対パス解決が、getDistDir()getCdnDir()getDocsDir() などのユーティリティ関数による絶対パス取得に置き換えられました。

設計判断

パス解決ロジックを utils.js の関数に集約する方式が採用されました。各スクリプトで個別に相対パスを記述する代わりに、共通のユーティリティ関数でディレクトリパスを管理することで、以下の利点が得られます:

  • パス解決ロジックの一元化: ディレクトリ構造の変更時に修正箇所が1箇所に集約される
  • ビルド環境の差異の吸収: 実行コンテキストに依存しない一貫したパス解決
  • 可読性の向上: getDistDir() のような明示的な関数名により、各パスの役割が明確になる

このアプローチにより、Pro版パッケージのビルド時にも正しいディレクトリにファイルが配置されるようになり、llms.txtdist/skills の欠落問題が解消されました。

まとめ

本PRは、ビルドスクリプトのパス解決を共通ユーティリティ関数に統一することで、Pro版パッケージのビルド成果物の不整合を修正しています。相対パスから関数ベースのパス管理への移行により、ビルドプロセスの堅牢性が向上し、異なるビルド環境でも一貫した出力先が保証されるようになりました。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)という「総論→各論→結論」の構成が明確で、非常に分かりやすいです。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライトの形式(```言語:ファイルパス)が正しく使用されています。記事末尾のPRリンクも適切です。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

ビルドスクリプトやNode.jsのパス解決に関する内容であり、専門知識を持つエンジニアという対象読者に適した技術レベルと表現で書かれています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションが総論→各論の構成になっており、各段落もトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られています。可読性が高いです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内のコードブロックは、提供されたDiffの内容(変更前・変更後)を正確に引用しています。ファイルパスも一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`path.resolve`, `__dirname`, `utils.js` といった技術用語が正確かつ適切な文脈で使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

相対パス指定の問題点や、共通ユーティリティ関数への移行による解決策など、技術的な説明が論理的で正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

PRのDescriptionがない状況で、PR TitleとDiffの内容から事実を正確に抽出し、記事を構成しています。「設計判断」セクションは推測を含みますが、コードの変更意図を汲んだ妥当な解説であり、ハルシネーションには該当しません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#2022)やバージョン番号(3.2.1)など、記事内の数値や固有名詞はすべて正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルは、PRのタイトル「Fix llms and agent skills generation for wa pro」の内容をより具体的に説明しており、主題が完全に一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事内のバージョン番号「3.2.1」はDiff内のchangelog.mdから裏付けられており、PR情報に基づかない外部知識の追加はありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

「〜しました」「〜改善されました」といった過去形・完了形の表現が使われており、完了した変更に対する時間表現として正確です。