astro-dev-mcp 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/dist/editors/commonEditor.d.ts +47 -0
- package/dist/editors/commonEditor.d.ts.map +1 -0
- package/dist/editors/commonEditor.js +108 -0
- package/dist/editors/commonEditor.js.map +1 -0
- package/dist/editors/scssVariablesEditor.d.ts +64 -0
- package/dist/editors/scssVariablesEditor.d.ts.map +1 -0
- package/dist/editors/scssVariablesEditor.js +105 -0
- package/dist/editors/scssVariablesEditor.js.map +1 -0
- package/dist/generators/astroGenerator.d.ts +15 -0
- package/dist/generators/astroGenerator.d.ts.map +1 -0
- package/dist/generators/astroGenerator.js +192 -0
- package/dist/generators/astroGenerator.js.map +1 -0
- package/dist/generators/scssGenerator.d.ts +15 -0
- package/dist/generators/scssGenerator.d.ts.map +1 -0
- package/dist/generators/scssGenerator.js +70 -0
- package/dist/generators/scssGenerator.js.map +1 -0
- package/dist/generators/typeGenerator.d.ts +5 -0
- package/dist/generators/typeGenerator.d.ts.map +1 -0
- package/dist/generators/typeGenerator.js +45 -0
- package/dist/generators/typeGenerator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +285 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/excelParser.d.ts +5 -0
- package/dist/parsers/excelParser.d.ts.map +1 -0
- package/dist/parsers/excelParser.js +55 -0
- package/dist/parsers/excelParser.js.map +1 -0
- package/dist/parsers/markdownParser.d.ts +5 -0
- package/dist/parsers/markdownParser.d.ts.map +1 -0
- package/dist/parsers/markdownParser.js +69 -0
- package/dist/parsers/markdownParser.js.map +1 -0
- package/dist/templates/pageTemplates.d.ts +24 -0
- package/dist/templates/pageTemplates.d.ts.map +1 -0
- package/dist/templates/pageTemplates.js +69 -0
- package/dist/templates/pageTemplates.js.map +1 -0
- package/dist/templates/sectionTemplates.d.ts +14 -0
- package/dist/templates/sectionTemplates.d.ts.map +1 -0
- package/dist/templates/sectionTemplates.js +199 -0
- package/dist/templates/sectionTemplates.js.map +1 -0
- package/dist/templates/uiPatterns.d.ts +23 -0
- package/dist/templates/uiPatterns.d.ts.map +1 -0
- package/dist/templates/uiPatterns.js +330 -0
- package/dist/templates/uiPatterns.js.map +1 -0
- package/dist/tools/generateComponent.d.ts +10 -0
- package/dist/tools/generateComponent.d.ts.map +1 -0
- package/dist/tools/generateComponent.js +40 -0
- package/dist/tools/generateComponent.js.map +1 -0
- package/dist/tools/generatePage.d.ts +10 -0
- package/dist/tools/generatePage.d.ts.map +1 -0
- package/dist/tools/generatePage.js +95 -0
- package/dist/tools/generatePage.js.map +1 -0
- package/dist/tools/generateSchema.d.ts +10 -0
- package/dist/tools/generateSchema.d.ts.map +1 -0
- package/dist/tools/generateSchema.js +70 -0
- package/dist/tools/generateSchema.js.map +1 -0
- package/dist/tools/generateSection.d.ts +10 -0
- package/dist/tools/generateSection.d.ts.map +1 -0
- package/dist/tools/generateSection.js +50 -0
- package/dist/tools/generateSection.js.map +1 -0
- package/dist/utils/formatter.d.ts +6 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +11 -0
- package/dist/utils/formatter.js.map +1 -0
- package/dist/utils/promptParser.d.ts +58 -0
- package/dist/utils/promptParser.d.ts.map +1 -0
- package/dist/utils/promptParser.js +200 -0
- package/dist/utils/promptParser.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 astro-mcp contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# Astro Generator MCP Server
|
|
2
|
+
|
|
3
|
+
データ駆動型Astroプロジェクトを自動生成するMCP(Model Context Protocol)サーバー
|
|
4
|
+
|
|
5
|
+
## 概要
|
|
6
|
+
|
|
7
|
+
このMCPサーバーは、デザインデータ、ワイヤーフレーム、コンテンツ資料から、Astroコンポーネント、セクション、ページテンプレートを自動生成します。
|
|
8
|
+
|
|
9
|
+
### 主な機能
|
|
10
|
+
|
|
11
|
+
- ✅ **コンポーネント生成**: Props定義から再利用可能なAstroコンポーネントを生成
|
|
12
|
+
- ✅ **セクション生成**: コンテンツデータから`_parts`配下のセクションを生成
|
|
13
|
+
- ✅ **ページ生成**: ページ構造全体を一括生成
|
|
14
|
+
- ✅ **スキーマ生成**: Excel/Markdown/JSONからTypeScript型定義を自動生成
|
|
15
|
+
|
|
16
|
+
## インストール
|
|
17
|
+
|
|
18
|
+
### 方法1: npxで直接実行(推奨)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx astro-dev-mcp
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 方法2: グローバルインストール
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g astro-dev-mcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 方法3: ローカル開発
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git clone https://github.com/YoshiokaY/astro-dev-mcp.git
|
|
34
|
+
cd astro-dev-mcp
|
|
35
|
+
npm install
|
|
36
|
+
npm run build
|
|
37
|
+
npm link
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Claude Desktop設定
|
|
41
|
+
|
|
42
|
+
`~/Library/Application Support/Claude/claude_desktop_config.json` に以下を追加:
|
|
43
|
+
|
|
44
|
+
### npx使用の場合
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"mcpServers": {
|
|
49
|
+
"astro-generator": {
|
|
50
|
+
"command": "npx",
|
|
51
|
+
"args": ["astro-dev-mcp"]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### グローバルインストールの場合
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"mcpServers": {
|
|
62
|
+
"astro-generator": {
|
|
63
|
+
"command": "astro-dev-mcp"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### ローカル開発の場合
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"mcpServers": {
|
|
74
|
+
"astro-generator": {
|
|
75
|
+
"command": "node",
|
|
76
|
+
"args": ["/absolute/path/to/astro-dev-mcp/dist/index.js"]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 使い方
|
|
83
|
+
|
|
84
|
+
### 1. コンポーネント生成
|
|
85
|
+
|
|
86
|
+
**プロンプト例**:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
ArticleCardコンポーネントを生成してください。
|
|
90
|
+
|
|
91
|
+
Props:
|
|
92
|
+
- ttl: タイトル(文字列)
|
|
93
|
+
- desc: 説明文(文字列)
|
|
94
|
+
- date: 投稿日(文字列)
|
|
95
|
+
- category: カテゴリ(文字列)
|
|
96
|
+
- img: 画像パス(文字列)
|
|
97
|
+
- imgAlt: 画像の代替テキスト(文字列)
|
|
98
|
+
|
|
99
|
+
デザイン:
|
|
100
|
+
- プライマリカラー: #0ea5e9
|
|
101
|
+
- レイアウト: grid
|
|
102
|
+
- フォントサイズ: 1.6rem
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**実行されるMCPツール**:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"name": "generate-component",
|
|
110
|
+
"arguments": {
|
|
111
|
+
"componentName": "ArticleCard",
|
|
112
|
+
"props": {
|
|
113
|
+
"ttl": { "type": "string", "description": "タイトル" },
|
|
114
|
+
"desc": { "type": "string", "description": "説明文" },
|
|
115
|
+
"date": { "type": "string", "description": "投稿日" },
|
|
116
|
+
"category": { "type": "string", "description": "カテゴリ" },
|
|
117
|
+
"img": { "type": "string", "description": "画像パス" },
|
|
118
|
+
"imgAlt": { "type": "string", "description": "画像の代替テキスト" }
|
|
119
|
+
},
|
|
120
|
+
"design": {
|
|
121
|
+
"colors": { "primary": "#0ea5e9" },
|
|
122
|
+
"layout": "grid",
|
|
123
|
+
"typography": { "size": "1.6rem" }
|
|
124
|
+
},
|
|
125
|
+
"accessibility": true
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**出力**:
|
|
131
|
+
|
|
132
|
+
- `src/components/ArticleCard.astro`
|
|
133
|
+
- `src/scss/components/_c_article_card.scss`
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### 2. セクション生成
|
|
138
|
+
|
|
139
|
+
**プロンプト例**:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
sampleページ用のarticlesセクションを生成してください。
|
|
143
|
+
|
|
144
|
+
コンテンツ:
|
|
145
|
+
- タイトル: 最新記事
|
|
146
|
+
- 記事数: 4件
|
|
147
|
+
- 各記事にタイトル、説明文、投稿日、カテゴリ、画像が必要
|
|
148
|
+
|
|
149
|
+
使用コンポーネント:
|
|
150
|
+
- Picture
|
|
151
|
+
- SetTime
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**実行されるMCPツール**:
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"name": "generate-section",
|
|
159
|
+
"arguments": {
|
|
160
|
+
"sectionType": "articles",
|
|
161
|
+
"pageName": "sample",
|
|
162
|
+
"content": {
|
|
163
|
+
"ttl": "最新記事",
|
|
164
|
+
"items": []
|
|
165
|
+
},
|
|
166
|
+
"components": ["Picture", "SetTime"]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**出力**:
|
|
172
|
+
|
|
173
|
+
- `src/pages/_parts/_sample/_articles.astro`
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### 3. ページ全体生成
|
|
178
|
+
|
|
179
|
+
**プロンプト例**:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
blogページを生成してください。
|
|
183
|
+
|
|
184
|
+
ページ情報:
|
|
185
|
+
- slug: blog
|
|
186
|
+
- タイトル: 技術ブログ
|
|
187
|
+
- 説明: Web開発に関する最新情報
|
|
188
|
+
- URL: /blog/
|
|
189
|
+
|
|
190
|
+
セクション構成:
|
|
191
|
+
1. hero(ヒーローセクション)
|
|
192
|
+
2. articles(記事一覧)
|
|
193
|
+
3. categories(カテゴリー)
|
|
194
|
+
4. qa(よくある質問)
|
|
195
|
+
|
|
196
|
+
パンくずリスト:
|
|
197
|
+
- ホーム > 技術ブログ
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**実行されるMCPツール**:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"name": "generate-page",
|
|
205
|
+
"arguments": {
|
|
206
|
+
"pageName": "blog",
|
|
207
|
+
"pageData": {
|
|
208
|
+
"head": {
|
|
209
|
+
"slug": "blog",
|
|
210
|
+
"ttl": "技術ブログ",
|
|
211
|
+
"description": "Web開発に関する最新情報",
|
|
212
|
+
"url": "/blog/"
|
|
213
|
+
},
|
|
214
|
+
"breadcrumbs": [
|
|
215
|
+
{ "text": "ホーム", "link": "/" },
|
|
216
|
+
{ "text": "技術ブログ", "link": "/blog/" }
|
|
217
|
+
],
|
|
218
|
+
"contents": {
|
|
219
|
+
"hero": { "ttl": "Tech Blog", "subtitle": "最新の技術情報を発信" },
|
|
220
|
+
"articles": { "ttl": "最新記事", "items": [] },
|
|
221
|
+
"categories": { "ttl": "カテゴリー", "items": [] },
|
|
222
|
+
"qa": { "ttl": "よくある質問", "items": [] }
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"sections": ["hero", "articles", "categories", "qa"]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**出力**:
|
|
231
|
+
|
|
232
|
+
- `src/pages/blog/index.astro`
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### 4. Excelからスキーマ生成
|
|
237
|
+
|
|
238
|
+
**プロンプト例**:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
以下のExcelデータからPageData型を生成してください。
|
|
242
|
+
|
|
243
|
+
| セクション種類 | タイトル | 説明文 | 投稿日 | カテゴリ |
|
|
244
|
+
|--------------|---------|--------|--------|---------|
|
|
245
|
+
| articles | 記事1 | 説明1 | 2025-01-01 | フロントエンド |
|
|
246
|
+
| articles | 記事2 | 説明2 | 2025-01-02 | バックエンド |
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**実行されるMCPツール**:
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"name": "generate-schema",
|
|
254
|
+
"arguments": {
|
|
255
|
+
"sourceType": "excel",
|
|
256
|
+
"sourceData": "/path/to/data.xlsx",
|
|
257
|
+
"schemaName": "PageData"
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**出力**:
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
export interface PageData {
|
|
266
|
+
head: {
|
|
267
|
+
slug: string;
|
|
268
|
+
ttl: string;
|
|
269
|
+
description: string;
|
|
270
|
+
url: string;
|
|
271
|
+
};
|
|
272
|
+
contents: {
|
|
273
|
+
articles: {
|
|
274
|
+
ttl: string;
|
|
275
|
+
items: {
|
|
276
|
+
タイトル: string;
|
|
277
|
+
説明文: string;
|
|
278
|
+
投稿日: string;
|
|
279
|
+
カテゴリ: string;
|
|
280
|
+
}[];
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 実践ワークフロー例
|
|
289
|
+
|
|
290
|
+
### ケース1: デザインカンプからLP制作
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
1. デザインカンプのスクリーンショットをアップロード
|
|
294
|
+
|
|
295
|
+
「このデザインからヒーローセクションを生成してください」
|
|
296
|
+
|
|
297
|
+
2. MCPがセクションを生成
|
|
298
|
+
|
|
299
|
+
3. 「同じデザインで、特徴セクションも生成してください」
|
|
300
|
+
|
|
301
|
+
4. 「これらのセクションを組み合わせて、LPページ全体を生成してください」
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
### ケース2: Excelコンテンツ資料から自動生成
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
1. Excelファイルのパスを指定
|
|
310
|
+
|
|
311
|
+
「このExcelからブログページのデータ構造を生成してください」
|
|
312
|
+
|
|
313
|
+
2. スキーマ生成
|
|
314
|
+
|
|
315
|
+
3. 「生成されたスキーマに基づいて、ページ全体を生成してください」
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 開発
|
|
321
|
+
|
|
322
|
+
### ビルド
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
npm run build
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### 開発モード(ウォッチ)
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
npm run dev
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### MCP Inspector(デバッグ)
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
npm run inspector
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## プロジェクト構造
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
astro-mcp/
|
|
346
|
+
├── src/
|
|
347
|
+
│ ├── index.ts # MCPサーバーエントリーポイント
|
|
348
|
+
│ ├── tools/ # MCPツール実装
|
|
349
|
+
│ │ ├── generateComponent.ts
|
|
350
|
+
│ │ ├── generateSection.ts
|
|
351
|
+
│ │ ├── generatePage.ts
|
|
352
|
+
│ │ └── generateSchema.ts
|
|
353
|
+
│ ├── generators/ # コード生成ロジック
|
|
354
|
+
│ │ ├── astroGenerator.ts
|
|
355
|
+
│ │ ├── scssGenerator.ts
|
|
356
|
+
│ │ └── typeGenerator.ts
|
|
357
|
+
│ ├── templates/ # テンプレート
|
|
358
|
+
│ │ ├── sectionTemplates.ts
|
|
359
|
+
│ │ └── pageTemplates.ts
|
|
360
|
+
│ ├── parsers/ # データパーサー
|
|
361
|
+
│ │ ├── excelParser.ts
|
|
362
|
+
│ │ └── markdownParser.ts
|
|
363
|
+
│ └── utils/ # ユーティリティ
|
|
364
|
+
│ └── formatter.ts
|
|
365
|
+
├── package.json
|
|
366
|
+
├── tsconfig.json
|
|
367
|
+
└── README.md
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## サポートするセクションタイプ
|
|
373
|
+
|
|
374
|
+
- `hero`: ヒーローセクション
|
|
375
|
+
- `articles`: 記事一覧
|
|
376
|
+
- `categories`: カテゴリー一覧
|
|
377
|
+
- `qa`: Q&A/FAQ
|
|
378
|
+
- `features`: 特徴・機能紹介
|
|
379
|
+
- `tech`: 技術スタック
|
|
380
|
+
- `concept`: コンセプト説明
|
|
381
|
+
- `videos`: 動画コンテンツ
|
|
382
|
+
- `custom`: カスタムセクション
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## ロードマップ
|
|
387
|
+
|
|
388
|
+
### Phase 1: プロトタイプ(完了)
|
|
389
|
+
|
|
390
|
+
- [x] 基本的なMCPサーバー構築
|
|
391
|
+
- [x] コンポーネント生成機能
|
|
392
|
+
- [x] セクション生成機能
|
|
393
|
+
- [x] ページ生成機能
|
|
394
|
+
- [x] スキーマ生成機能
|
|
395
|
+
|
|
396
|
+
### Phase 2: 拡張機能(次期)
|
|
397
|
+
|
|
398
|
+
- [ ] Figma API連携(デザイントークン自動抽出)
|
|
399
|
+
- [ ] 画像OCR対応(デザインカンプ解析)
|
|
400
|
+
- [ ] レスポンシブSCSS自動生成
|
|
401
|
+
- [ ] アクセシビリティチェック機能
|
|
402
|
+
|
|
403
|
+
### Phase 3: AI強化(将来)
|
|
404
|
+
|
|
405
|
+
- [ ] 自然言語からの直接生成
|
|
406
|
+
- [ ] デザインシステム学習機能
|
|
407
|
+
- [ ] コンポーネントライブラリ管理
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## ライセンス
|
|
412
|
+
|
|
413
|
+
MIT
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 貢献
|
|
418
|
+
|
|
419
|
+
Issue、Pull Requestを歓迎します。
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## お問い合わせ
|
|
424
|
+
|
|
425
|
+
プロジェクトに関する質問は、GitHubのIssueでお願いします。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common.astro 編集機能
|
|
3
|
+
* サイト全体の設定(head, menu)を解析・更新する
|
|
4
|
+
*/
|
|
5
|
+
export interface HeadConfig {
|
|
6
|
+
siteName?: string;
|
|
7
|
+
domain?: string;
|
|
8
|
+
favicon?: string;
|
|
9
|
+
ogImg?: string;
|
|
10
|
+
logo?: string;
|
|
11
|
+
copyright?: string;
|
|
12
|
+
webfont?: string;
|
|
13
|
+
twitterName?: string;
|
|
14
|
+
facebookID?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MenuItem {
|
|
17
|
+
link: string;
|
|
18
|
+
txt: string;
|
|
19
|
+
child?: MenuItem[];
|
|
20
|
+
anchor?: boolean;
|
|
21
|
+
blank?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface CommonUpdateConfig {
|
|
24
|
+
head?: HeadConfig;
|
|
25
|
+
menu?: MenuItem[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Common.astro の内容を解析
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseCommonAstro(content: string): {
|
|
31
|
+
head: HeadConfig;
|
|
32
|
+
menu: MenuItem[];
|
|
33
|
+
fullContent: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Common.astro の head セクションを更新
|
|
37
|
+
*/
|
|
38
|
+
export declare function updateCommonHead(originalContent: string, updates: HeadConfig): string;
|
|
39
|
+
/**
|
|
40
|
+
* Common.astro の menu セクションを更新
|
|
41
|
+
*/
|
|
42
|
+
export declare function updateCommonMenu(originalContent: string, menuItems: MenuItem[]): string;
|
|
43
|
+
/**
|
|
44
|
+
* Common.astro全体を更新
|
|
45
|
+
*/
|
|
46
|
+
export declare function updateCommonAstro(originalContent: string, config: CommonUpdateConfig): string;
|
|
47
|
+
//# sourceMappingURL=commonEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonEditor.d.ts","sourceRoot":"","sources":["../../src/editors/commonEditor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAmCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,UAAU,GAClB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,QAAQ,EAAE,GACpB,MAAM,CASR;AAkCD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAcR"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common.astro 編集機能
|
|
3
|
+
* サイト全体の設定(head, menu)を解析・更新する
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Common.astro の内容を解析
|
|
7
|
+
*/
|
|
8
|
+
export function parseCommonAstro(content) {
|
|
9
|
+
// head セクションの抽出
|
|
10
|
+
const headMatch = content.match(/head:\s*{([^}]+)}/s);
|
|
11
|
+
const head = {};
|
|
12
|
+
if (headMatch) {
|
|
13
|
+
const headContent = headMatch[1];
|
|
14
|
+
// 各プロパティを正規表現で抽出
|
|
15
|
+
const extractValue = (key) => {
|
|
16
|
+
const match = headContent.match(new RegExp(`${key}:\\s*"([^"]*)"`, 's'));
|
|
17
|
+
return match ? match[1] : undefined;
|
|
18
|
+
};
|
|
19
|
+
head.siteName = extractValue('siteName');
|
|
20
|
+
head.domain = extractValue('domain');
|
|
21
|
+
head.favicon = extractValue('favicon');
|
|
22
|
+
head.ogImg = extractValue('ogImg');
|
|
23
|
+
head.logo = extractValue('logo');
|
|
24
|
+
head.copyright = extractValue('copyright');
|
|
25
|
+
head.webfont = extractValue('webfont');
|
|
26
|
+
head.twitterName = extractValue('twitterName');
|
|
27
|
+
head.facebookID = extractValue('facebookID');
|
|
28
|
+
}
|
|
29
|
+
// menu セクションの抽出(簡易版、実際のパースは複雑)
|
|
30
|
+
const menuMatch = content.match(/menu:\s*\[([^\]]+)\]/s);
|
|
31
|
+
const menu = [];
|
|
32
|
+
// 既存の完全なコンテンツを保持
|
|
33
|
+
return {
|
|
34
|
+
head,
|
|
35
|
+
menu,
|
|
36
|
+
fullContent: content,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Common.astro の head セクションを更新
|
|
41
|
+
*/
|
|
42
|
+
export function updateCommonHead(originalContent, updates) {
|
|
43
|
+
let updatedContent = originalContent;
|
|
44
|
+
// 各プロパティを更新
|
|
45
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
46
|
+
if (value !== undefined) {
|
|
47
|
+
// 既存の行を置換
|
|
48
|
+
const regex = new RegExp(`(${key}:\\s*)"[^"]*"`, 'g');
|
|
49
|
+
const replacement = `$1"${value}"`;
|
|
50
|
+
if (updatedContent.match(regex)) {
|
|
51
|
+
updatedContent = updatedContent.replace(regex, replacement);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return updatedContent;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Common.astro の menu セクションを更新
|
|
59
|
+
*/
|
|
60
|
+
export function updateCommonMenu(originalContent, menuItems) {
|
|
61
|
+
// menu配列を文字列化
|
|
62
|
+
const menuString = formatMenuArray(menuItems);
|
|
63
|
+
// 既存のmenu配列を置換
|
|
64
|
+
const regex = /menu:\s*\[[^\]]*\]/s;
|
|
65
|
+
const replacement = `menu: ${menuString}`;
|
|
66
|
+
return originalContent.replace(regex, replacement);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* MenuItem配列をAstro形式の文字列に変換
|
|
70
|
+
*/
|
|
71
|
+
function formatMenuArray(items, indent = 2) {
|
|
72
|
+
const spaces = ' '.repeat(indent);
|
|
73
|
+
const lines = ['['];
|
|
74
|
+
items.forEach((item, index) => {
|
|
75
|
+
lines.push(`${spaces} {`);
|
|
76
|
+
lines.push(`${spaces} link: "${item.link}",`);
|
|
77
|
+
lines.push(`${spaces} txt: "${item.txt}",`);
|
|
78
|
+
if (item.anchor !== undefined) {
|
|
79
|
+
lines.push(`${spaces} anchor: ${item.anchor},`);
|
|
80
|
+
}
|
|
81
|
+
if (item.blank !== undefined) {
|
|
82
|
+
lines.push(`${spaces} blank: ${item.blank},`);
|
|
83
|
+
}
|
|
84
|
+
if (item.child && item.child.length > 0) {
|
|
85
|
+
const childString = formatMenuArray(item.child, indent + 4);
|
|
86
|
+
lines.push(`${spaces} child: ${childString},`);
|
|
87
|
+
}
|
|
88
|
+
lines.push(`${spaces} }${index < items.length - 1 ? ',' : ''}`);
|
|
89
|
+
});
|
|
90
|
+
lines.push(`${spaces}]`);
|
|
91
|
+
return lines.join('\n');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Common.astro全体を更新
|
|
95
|
+
*/
|
|
96
|
+
export function updateCommonAstro(originalContent, config) {
|
|
97
|
+
let updatedContent = originalContent;
|
|
98
|
+
// head セクションの更新
|
|
99
|
+
if (config.head) {
|
|
100
|
+
updatedContent = updateCommonHead(updatedContent, config.head);
|
|
101
|
+
}
|
|
102
|
+
// menu セクションの更新
|
|
103
|
+
if (config.menu) {
|
|
104
|
+
updatedContent = updateCommonMenu(updatedContent, config.menu);
|
|
105
|
+
}
|
|
106
|
+
return updatedContent;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=commonEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonEditor.js","sourceRoot":"","sources":["../../src/editors/commonEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* _variables.scss 編集機能
|
|
3
|
+
* SCSS変数(カラー、サイズ、ブレークポイント)を解析・更新する
|
|
4
|
+
*/
|
|
5
|
+
export interface ColorVariables {
|
|
6
|
+
'color-body'?: string;
|
|
7
|
+
'color-txt'?: string;
|
|
8
|
+
'color-reversal'?: string;
|
|
9
|
+
'color-gray'?: string;
|
|
10
|
+
'color-prime'?: string;
|
|
11
|
+
'color-second'?: string;
|
|
12
|
+
'color-third'?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface LayoutVariables {
|
|
15
|
+
brakePoint?: number;
|
|
16
|
+
containerSize?: number;
|
|
17
|
+
containerPadding?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface FontSizeConfig {
|
|
20
|
+
pc: number;
|
|
21
|
+
sp: number;
|
|
22
|
+
}
|
|
23
|
+
export interface FontSizeVariables {
|
|
24
|
+
h1?: FontSizeConfig;
|
|
25
|
+
h2?: FontSizeConfig;
|
|
26
|
+
h3?: FontSizeConfig;
|
|
27
|
+
h4?: FontSizeConfig;
|
|
28
|
+
h5?: FontSizeConfig;
|
|
29
|
+
xl?: FontSizeConfig;
|
|
30
|
+
lg?: FontSizeConfig;
|
|
31
|
+
base?: FontSizeConfig;
|
|
32
|
+
sm?: FontSizeConfig;
|
|
33
|
+
xs?: FontSizeConfig;
|
|
34
|
+
}
|
|
35
|
+
export interface ScssVariablesConfig {
|
|
36
|
+
colors?: ColorVariables;
|
|
37
|
+
layout?: LayoutVariables;
|
|
38
|
+
fontSizes?: FontSizeVariables;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* _variables.scss の内容を解析
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseScssVariables(content: string): {
|
|
44
|
+
colors: ColorVariables;
|
|
45
|
+
layout: LayoutVariables;
|
|
46
|
+
fontSizes: FontSizeVariables;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* カラー変数を更新
|
|
50
|
+
*/
|
|
51
|
+
export declare function updateScssColors(originalContent: string, colors: ColorVariables): string;
|
|
52
|
+
/**
|
|
53
|
+
* レイアウト変数を更新
|
|
54
|
+
*/
|
|
55
|
+
export declare function updateScssLayout(originalContent: string, layout: LayoutVariables): string;
|
|
56
|
+
/**
|
|
57
|
+
* フォントサイズ変数を更新
|
|
58
|
+
*/
|
|
59
|
+
export declare function updateScssFontSizes(originalContent: string, fontSizes: FontSizeVariables): string;
|
|
60
|
+
/**
|
|
61
|
+
* _variables.scss 全体を更新
|
|
62
|
+
*/
|
|
63
|
+
export declare function updateScssVariables(originalContent: string, config: ScssVariablesConfig): string;
|
|
64
|
+
//# sourceMappingURL=scssVariablesEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scssVariablesEditor.d.ts","sourceRoot":"","sources":["../../src/editors/scssVariablesEditor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAwCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,cAAc,GACrB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,eAAe,GACtB,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,iBAAiB,GAC3B,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAgBR"}
|