ビルドスクリプトのパス解決方法を改善し、Pro版パッケージへのファイル配置を修正
Web Awesome 3.2.1では、ビルドスクリプトのパス解決ロジックを改善し、Pro版パッケージに llms.txt と dist/skills ディレクトリが正しく含まれるようになりました。相対パスによるディレクトリ指定を共通のユーティリティ関数に置き換えることで、ビルド環境の違いによる出力先の不一致を解消しています。
背景
これまでビルドスクリプトでは path.resolve(__dirname, '../dist') のような相対パス指定で出力先ディレクトリを決定していました。この方法では、スクリプトの実行場所やビルドプロセスの違いによって、ファイルが意図したディレクトリに配置されないケースがありました。特にPro版パッケージのビルド時に、AIツール向けのドキュメントファイル(llms.txt)やエージェントスキルファイル(dist/skills)が出力先に含まれない不具合が発生していました。
技術的な変更
scripts/agent-skill.js と scripts/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.txt と dist/skills の欠落問題が解消されました。
まとめ
本PRは、ビルドスクリプトのパス解決を共通ユーティリティ関数に統一することで、Pro版パッケージのビルド成果物の不整合を修正しています。相対パスから関数ベースのパス管理への移行により、ビルドプロセスの堅牢性が向上し、異なるビルド環境でも一貫した出力先が保証されるようになりました。