@ywal123456/jskim 0.5.0 → 0.5.2
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/README.md +25 -12
- package/docs/JSKim_User_Guide_v0.5.2.pdf +0 -0
- package/docs/create-jskim.md +44 -12
- package/docs/user-guide/01-introduction.md +98 -0
- package/docs/user-guide/02-getting-started.md +162 -0
- package/docs/user-guide/03-project-structure.md +216 -0
- package/docs/user-guide/04-basic-workflow.md +186 -0
- package/docs/user-guide/05-cli-reference.md +218 -0
- package/docs/user-guide/06-configuration.md +357 -0
- package/docs/user-guide/07-files-pipeline.md +278 -0
- package/docs/user-guide/08-nunjucks.md +300 -0
- package/docs/user-guide/09-development-features.md +228 -0
- package/docs/user-guide/10-errors-and-troubleshooting.md +420 -0
- package/docs/user-guide/11-dashboard-example.md +188 -0
- package/docs/user-guide/12-crud-example.md +203 -0
- package/docs/user-guide/13-wizard-example.md +196 -0
- package/docs/user-guide/14-limitations.md +186 -0
- package/docs/user-guide/README.md +99 -0
- package/docs/user-guide-pdf-build.md +128 -0
- package/package.json +8 -1
- package/scripts/docs/build-user-guide-pdf.js +49 -0
- package/scripts/docs/user-guide-pdf-lib.js +825 -0
- package/scripts/docs/user-guide-print.css +286 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
# エラーとトラブルシュート
|
|
2
|
+
|
|
3
|
+
この章では、よくある問題の症状、原因、JSKim の動作、確認方法、解決の手がかりを整理します。
|
|
4
|
+
CLI の構文は [CLIリファレンス](05-cli-reference.md)、設定は [設定](06-configuration.md) も参照してください。
|
|
5
|
+
|
|
6
|
+
## エラー処理の概要
|
|
7
|
+
|
|
8
|
+
| 状況 | `build` | `watch` | `serve` | `dev` |
|
|
9
|
+
| ---- | ------- | ------- | ------- | ----- |
|
|
10
|
+
| template / render エラー | 終了(失敗) | process 維持 | — | process 維持 + overlay 可 |
|
|
11
|
+
| config エラー(起動時) | 終了(失敗) | 終了(失敗) | 終了(失敗) | 終了(失敗) |
|
|
12
|
+
| config エラー(実行中の再読込) | — | last-known-good を維持 | — | 維持 + overlay 可 |
|
|
13
|
+
| port 衝突 | — | — | 起動失敗で終了 | 起動失敗で終了 |
|
|
14
|
+
|
|
15
|
+
`—` はその command では通常起きない、または直接関係しないことを表します。
|
|
16
|
+
|
|
17
|
+
## 問題を調べる基本の順序
|
|
18
|
+
|
|
19
|
+
1. terminal のメッセージを読む
|
|
20
|
+
2. `dev` なら browser overlay も確認する
|
|
21
|
+
3. 直前に編集した file を見直す
|
|
22
|
+
4. `jskim.config.js` と path を確認する
|
|
23
|
+
5. port / 別 process の占有を確認する
|
|
24
|
+
6. restart-required の設定変更なら command を再起動する
|
|
25
|
+
|
|
26
|
+
いきなり依存関係の再インストールやキャッシュ削除から始めないでください。
|
|
27
|
+
|
|
28
|
+
## Unknown command / option
|
|
29
|
+
|
|
30
|
+
### 症状
|
|
31
|
+
|
|
32
|
+
コマンドや option が認識されない。
|
|
33
|
+
|
|
34
|
+
### 原因
|
|
35
|
+
|
|
36
|
+
- 存在しない command 名
|
|
37
|
+
- その command で使えない option
|
|
38
|
+
- `--port=4000` のような `=` 付き記法
|
|
39
|
+
- `--` 単独トークン
|
|
40
|
+
- option の重複や値の欠落
|
|
41
|
+
|
|
42
|
+
### JSKim の動作
|
|
43
|
+
|
|
44
|
+
引数解析の段階で失敗し、process は終了します(exit code `1`)。
|
|
45
|
+
|
|
46
|
+
代表メッセージ:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
[JSKim] 不明なコマンドです: <command>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
[JSKim] 不明なoptionです: <token>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 確認・解決
|
|
57
|
+
|
|
58
|
+
- `jskim --help` で使える command を確認する
|
|
59
|
+
- `serve` に `--open` は無い(`dev --open` を使う)
|
|
60
|
+
- `--port 4000` のようにスペース区切りで書く
|
|
61
|
+
|
|
62
|
+
## Project 選択のエラー
|
|
63
|
+
|
|
64
|
+
### 症状
|
|
65
|
+
|
|
66
|
+
どの project を対象にするか決められない。
|
|
67
|
+
|
|
68
|
+
### 原因と動作
|
|
69
|
+
|
|
70
|
+
| 状況 | 結果 |
|
|
71
|
+
| ---- | ---- |
|
|
72
|
+
| `projects` が 0 件 | エラー |
|
|
73
|
+
| 1 件だけ | 名前省略可 |
|
|
74
|
+
| 2 件以上で省略 | エラー(候補一覧) |
|
|
75
|
+
| 存在しない名前 | エラー |
|
|
76
|
+
| project 名と `--all` の同時指定 | エラー |
|
|
77
|
+
|
|
78
|
+
代表メッセージ:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
[JSKim] projectを指定してください。
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 解決例
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
jskim build sample
|
|
88
|
+
jskim build --all
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Config file の読み込みエラー
|
|
92
|
+
|
|
93
|
+
### 症状
|
|
94
|
+
|
|
95
|
+
起動直後に設定を読めない。
|
|
96
|
+
|
|
97
|
+
### 原因の例
|
|
98
|
+
|
|
99
|
+
- ワークスペースに `jskim.config.js` が無い
|
|
100
|
+
- JavaScript の構文エラー
|
|
101
|
+
- `module.exports` がオブジェクトでない
|
|
102
|
+
- ESM(`export default`)形式を使っている
|
|
103
|
+
- require 時の例外
|
|
104
|
+
|
|
105
|
+
代表メッセージ:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
[JSKim] 設定ファイルが見つかりません: jskim.config.js
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 解決
|
|
112
|
+
|
|
113
|
+
- コマンドを project ルートで実行する
|
|
114
|
+
- CommonJS(`module.exports = { ... }`)で書く
|
|
115
|
+
- 構文エラーを修正する
|
|
116
|
+
|
|
117
|
+
## Config 検証エラー
|
|
118
|
+
|
|
119
|
+
### 症状
|
|
120
|
+
|
|
121
|
+
設定は読めたが、値が不正。
|
|
122
|
+
|
|
123
|
+
### よくある原因
|
|
124
|
+
|
|
125
|
+
- `projects` が無い / オブジェクトでない
|
|
126
|
+
- `sourceDir` / `outputDir` の欠落や未存在
|
|
127
|
+
- `files` と `render` / `copy` の同時設定
|
|
128
|
+
- `serve.port` / `watch.debounce` の型や範囲不正
|
|
129
|
+
- `data.rootPath`(予約語衝突)
|
|
130
|
+
|
|
131
|
+
> **Note**
|
|
132
|
+
>
|
|
133
|
+
> 認識していない余分な key は、必ずしもエラーになりません。
|
|
134
|
+
> 無視されることがあります。
|
|
135
|
+
|
|
136
|
+
### 解決
|
|
137
|
+
|
|
138
|
+
[設定](06-configuration.md) の型と既定値を確認し、問題の key だけ直します。
|
|
139
|
+
|
|
140
|
+
## Template / render エラー
|
|
141
|
+
|
|
142
|
+
### 症状
|
|
143
|
+
|
|
144
|
+
Nunjucks の構文ミス、見つからない `extends` / `include`、filter 実行時エラーなど。
|
|
145
|
+
|
|
146
|
+
### JSKim の動作
|
|
147
|
+
|
|
148
|
+
| command | 動作 |
|
|
149
|
+
| ------- | ---- |
|
|
150
|
+
| `build` | 失敗して終了(exit code `1`) |
|
|
151
|
+
| `watch` / `dev` | terminal に表示。process は維持。`dev` では overlay 可 |
|
|
152
|
+
|
|
153
|
+
代表的な見出し:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
[JSKim] プロジェクト "<name>" の Nunjucks レンダリングに失敗しました。
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 確認・解決
|
|
160
|
+
|
|
161
|
+
1. 表示されたソース / テンプレート path を開く
|
|
162
|
+
2. `extends` / `include` のパスが template root 基準か確認する
|
|
163
|
+
3. 修正して保存する(`watch` / `dev` なら再 build)
|
|
164
|
+
4. 成功すれば overlay は消える
|
|
165
|
+
|
|
166
|
+
文法の基本は [Nunjucksの使い方](08-nunjucks.md) を参照してください。
|
|
167
|
+
|
|
168
|
+
## Output パスの衝突
|
|
169
|
+
|
|
170
|
+
### 症状
|
|
171
|
+
|
|
172
|
+
同じ output を複数の source が生成しようとする。
|
|
173
|
+
|
|
174
|
+
### 原因の例
|
|
175
|
+
|
|
176
|
+
- 複数の `files` entry が同じ出力先に重なる
|
|
177
|
+
- `main.js` と `main.js.njk` のように suffix 除去後に同名になる
|
|
178
|
+
- Windows で大文字小文字だけが違う path
|
|
179
|
+
|
|
180
|
+
### JSKim の動作
|
|
181
|
+
|
|
182
|
+
書き込み前の計画段階で検出し、build は失敗します。
|
|
183
|
+
|
|
184
|
+
### 解決
|
|
185
|
+
|
|
186
|
+
- `from` / `to` / ファイル名を分ける
|
|
187
|
+
- どちらかを `exclude` する
|
|
188
|
+
- 命名規則を揃える
|
|
189
|
+
|
|
190
|
+
詳細は [files pipeline](07-files-pipeline.md) を参照してください。
|
|
191
|
+
|
|
192
|
+
## 複数 project の outputDir 衝突
|
|
193
|
+
|
|
194
|
+
### 症状
|
|
195
|
+
|
|
196
|
+
`jskim build --all` が開始前に止まる。
|
|
197
|
+
|
|
198
|
+
### 原因
|
|
199
|
+
|
|
200
|
+
- 同じ `outputDir`
|
|
201
|
+
- 入れ子(祖先 / 子孫)の `outputDir`
|
|
202
|
+
|
|
203
|
+
これは files 内の output 衝突とは別です。project 間の互換性検査です。
|
|
204
|
+
|
|
205
|
+
### 解決
|
|
206
|
+
|
|
207
|
+
各 project の `outputDir` を重ならない場所に分けます。
|
|
208
|
+
|
|
209
|
+
```js
|
|
210
|
+
projects: {
|
|
211
|
+
siteA: { sourceDir: 'src/a', outputDir: 'dist/a' },
|
|
212
|
+
siteB: { sourceDir: 'src/b', outputDir: 'dist/b' },
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Port already in use
|
|
217
|
+
|
|
218
|
+
### 症状
|
|
219
|
+
|
|
220
|
+
`serve` / `dev` が待ち受けできない。
|
|
221
|
+
|
|
222
|
+
### 原因
|
|
223
|
+
|
|
224
|
+
既定の `3000`(または指定 port)を他 process が使用中(`EADDRINUSE`)。
|
|
225
|
+
|
|
226
|
+
代表メッセージ:
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
[JSKim] ポート <port> はすでに使用されています。
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### JSKim の動作
|
|
233
|
+
|
|
234
|
+
自動で次の空き port を探しません。起動に失敗した process は終了します。
|
|
235
|
+
|
|
236
|
+
### 解決例
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
jskim dev sample --port 3001
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
または `jskim.config.js` の `serve.port` を変更します。
|
|
243
|
+
占有している process を止める方法は OS によって異なります。
|
|
244
|
+
|
|
245
|
+
## 不正な host / port
|
|
246
|
+
|
|
247
|
+
### 症状
|
|
248
|
+
|
|
249
|
+
CLI または config の待ち受け設定が拒否される。
|
|
250
|
+
|
|
251
|
+
### 原因の例
|
|
252
|
+
|
|
253
|
+
- `--port` の値欠落
|
|
254
|
+
- `0` / `65536` / 小数 / 非数値
|
|
255
|
+
- 空の host
|
|
256
|
+
|
|
257
|
+
検出は CLI 解析または設定検証の段階です。
|
|
258
|
+
|
|
259
|
+
### 正しい例
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
jskim serve sample --host 127.0.0.1 --port 4000
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Browser open の失敗
|
|
266
|
+
|
|
267
|
+
### 症状
|
|
268
|
+
|
|
269
|
+
`dev --open` でブラウザが開かない。
|
|
270
|
+
|
|
271
|
+
### JSKim の動作
|
|
272
|
+
|
|
273
|
+
warning を出し、**開発サーバーは継続**します。process 失敗にはしません。
|
|
274
|
+
|
|
275
|
+
### 解決
|
|
276
|
+
|
|
277
|
+
terminal に表示された URL を手動で開きます。
|
|
278
|
+
|
|
279
|
+
```text
|
|
280
|
+
http://127.0.0.1:3000/
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## CSS 変更が soft reload されない
|
|
284
|
+
|
|
285
|
+
### 確認順
|
|
286
|
+
|
|
287
|
+
1. `dev` で `liveReload: true` か
|
|
288
|
+
2. 変更が `.css` / `.css.njk` の `change` だけか
|
|
289
|
+
3. `templates[]` 配下の変更ではないか
|
|
290
|
+
4. page の `<link rel="stylesheet">` が same-origin か
|
|
291
|
+
5. href が実際の output を指しているか
|
|
292
|
+
|
|
293
|
+
よくある誤り(page-local):
|
|
294
|
+
|
|
295
|
+
```nunjucks
|
|
296
|
+
{{ rootPath }}assets/css/crud.css
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
正しい例:
|
|
300
|
+
|
|
301
|
+
```html
|
|
302
|
+
<link rel="stylesheet" href="assets/css/crud.css">
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
条件を満たさない、または読み込みに失敗すると full reload になります。
|
|
306
|
+
詳細は [開発機能](09-development-features.md) を参照してください。
|
|
307
|
+
|
|
308
|
+
## Browser overlay が表示されない
|
|
309
|
+
|
|
310
|
+
### 確認
|
|
311
|
+
|
|
312
|
+
- `jskim dev`(または `npm run dev`)で起動しているか
|
|
313
|
+
- `dev.liveReload` が `true` か
|
|
314
|
+
- terminal にはエラーが出ているか
|
|
315
|
+
- ブラウザが live reload に接続できているか(接続再試行のログ)
|
|
316
|
+
- Strict CSP などで注入 script が遮断されていないか(環境依存)
|
|
317
|
+
|
|
318
|
+
`serve` だけでは overlay は出ません。
|
|
319
|
+
|
|
320
|
+
## Config の修正が反映されない
|
|
321
|
+
|
|
322
|
+
### 確認
|
|
323
|
+
|
|
324
|
+
1. `watch` / `dev` で動かしているか(`build` / `serve` は監視しない)
|
|
325
|
+
2. 構文エラーや検証エラーで last-known-good のままになっていないか
|
|
326
|
+
3. restart-required(`outputDir` / `serve.host` / `serve.port` / `dev.liveReload`)ではないか
|
|
327
|
+
4. CLI の `--host` / `--port` が config より優先されていないか
|
|
328
|
+
5. terminal の warning を読んでいないか
|
|
329
|
+
|
|
330
|
+
必要なら command を止めて再起動します。
|
|
331
|
+
|
|
332
|
+
## build --all の一部失敗
|
|
333
|
+
|
|
334
|
+
### 症状
|
|
335
|
+
|
|
336
|
+
ログでは成功と失敗が混在し、最終的に失敗終了する。
|
|
337
|
+
|
|
338
|
+
### JSKim の動作
|
|
339
|
+
|
|
340
|
+
- 定義順に各 project を試す
|
|
341
|
+
- 途中失敗があっても次の project へ進む
|
|
342
|
+
- 1 件でも失敗があれば最終 exit code は `1`
|
|
343
|
+
- 成功した project の output は残ることがある
|
|
344
|
+
|
|
345
|
+
> **Warning**
|
|
346
|
+
>
|
|
347
|
+
> 途中の成功ログだけを見て、全体が成功したと誤解しないでください。
|
|
348
|
+
|
|
349
|
+
## 削除した source が output に残る
|
|
350
|
+
|
|
351
|
+
### 原因と動作
|
|
352
|
+
|
|
353
|
+
| `build.clean` | 削除した source の扱い |
|
|
354
|
+
| ------------- | ---------------------- |
|
|
355
|
+
| `true`(既定) | 再 build 前に `outputDir` を消すため、消えたファイルも output から無くなる |
|
|
356
|
+
| `false` | 上書き生成のみ。消えた source に対応する古い output が残ることがある |
|
|
357
|
+
|
|
358
|
+
`watch` / `dev` の再 build でも同様です。
|
|
359
|
+
|
|
360
|
+
### 解決
|
|
361
|
+
|
|
362
|
+
- 通常は `build.clean: true` を維持する
|
|
363
|
+
- `false` にしている場合は、不要ファイルを手動で整理するか、一度 clean 付き build を行う
|
|
364
|
+
|
|
365
|
+
## dist を直接編集したら消えた
|
|
366
|
+
|
|
367
|
+
### 原因
|
|
368
|
+
|
|
369
|
+
`dist/` は build の output です。次の clean / build で上書き・削除されることがあります。
|
|
370
|
+
|
|
371
|
+
### 解決
|
|
372
|
+
|
|
373
|
+
編集するのは `src/`(source)側です。
|
|
374
|
+
見た目の確認用に `dist` を一時的に開くことはできますが、恒久的な修正場所にはしません。
|
|
375
|
+
|
|
376
|
+
## Internal link / asset が 404
|
|
377
|
+
|
|
378
|
+
### 確認
|
|
379
|
+
|
|
380
|
+
- source → output の対応([files pipeline](07-files-pipeline.md))
|
|
381
|
+
- 共通 asset は `{{ rootPath }}assets/...`
|
|
382
|
+
- page-local は `assets/...`
|
|
383
|
+
- 先頭 `/` の絶対パスが意図どおりか(serve の root は `outputDir`)
|
|
384
|
+
- Windows 以外も含め、ファイル名の大文字小文字
|
|
385
|
+
- そもそも build 済みか
|
|
386
|
+
|
|
387
|
+
公式 sample の例:
|
|
388
|
+
|
|
389
|
+
- 共通: `assets/css/common.css`
|
|
390
|
+
- CRUD: `crud/assets/css/crud.css`
|
|
391
|
+
|
|
392
|
+
## Exit code と process 維持の要約
|
|
393
|
+
|
|
394
|
+
| 状況 | process | 結果 |
|
|
395
|
+
| ---- | ------- | ---- |
|
|
396
|
+
| `build` 成功 | 終了 | exit `0` |
|
|
397
|
+
| `build` 失敗 | 終了 | exit `1` |
|
|
398
|
+
| `build --all` で 1 件以上失敗 | 終了 | exit `1` |
|
|
399
|
+
| `watch` / `dev` の再 build 失敗 | 維持 | エラー表示(`dev` は overlay 可) |
|
|
400
|
+
| `serve` / `dev` の port 衝突 | 起動失敗側は終了 | exit `1` |
|
|
401
|
+
| `dev --open` の失敗 | 維持 | warning |
|
|
402
|
+
| `Ctrl+C` での停止 | 終了 | exit `0` |
|
|
403
|
+
|
|
404
|
+
## 問い合わせ・報告に用意するとよい情報
|
|
405
|
+
|
|
406
|
+
- JSKim version(`jskim --version`)
|
|
407
|
+
- Node.js version
|
|
408
|
+
- package manager(npm / pnpm / yarn)
|
|
409
|
+
- OS
|
|
410
|
+
- 実行した command
|
|
411
|
+
- terminal のエラー全文(必要な範囲)
|
|
412
|
+
- `jskim.config.js` の関連部分
|
|
413
|
+
- 再現できる最小の directory 構成
|
|
414
|
+
|
|
415
|
+
> **Note**
|
|
416
|
+
>
|
|
417
|
+
> 報告前に、秘密情報、個人情報、社内専用 URL を取り除いてください。
|
|
418
|
+
|
|
419
|
+
公式の issue 先は、パッケージ / repository の案内に従ってください。
|
|
420
|
+
(例: GitHub repository の Issues)
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Dashboard例
|
|
2
|
+
|
|
3
|
+
この章では、公式 Dashboard sample を通じて、共通 layout、component、template 内データ、共通 / page-local asset の使い方を確認します。
|
|
4
|
+
|
|
5
|
+
> **Note**
|
|
6
|
+
>
|
|
7
|
+
> 以下のコードは核心部分だけの抜粋です。
|
|
8
|
+
> 全体の source は各 link から確認できます。
|
|
9
|
+
|
|
10
|
+
## Sample の目的
|
|
11
|
+
|
|
12
|
+
Dashboard は、管理画面でよく見かける構成を、1 画面にまとめた静的 UI sample です。
|
|
13
|
+
|
|
14
|
+
- 共通 layout / component / page の関係を確認できる
|
|
15
|
+
- summary card、table、notice などの見た目を確認できる
|
|
16
|
+
- 実際のデータ取得や chart 機能はない
|
|
17
|
+
- 表示値は template 内の静的値
|
|
18
|
+
|
|
19
|
+
Source:
|
|
20
|
+
|
|
21
|
+
- [`pages/dashboard/index.html.njk`](../../src/sample/pages/dashboard/index.html.njk)
|
|
22
|
+
|
|
23
|
+
## 関連 file
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
src/sample/
|
|
27
|
+
├─ layouts/base.njk
|
|
28
|
+
├─ components/
|
|
29
|
+
│ ├─ header.njk
|
|
30
|
+
│ ├─ sidebar.njk
|
|
31
|
+
│ ├─ breadcrumb.njk
|
|
32
|
+
│ └─ footer.njk
|
|
33
|
+
└─ pages/
|
|
34
|
+
├─ assets/css/common.css
|
|
35
|
+
└─ dashboard/
|
|
36
|
+
├─ index.html.njk
|
|
37
|
+
└─ assets/css/dashboard.css
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
共通 layout の詳細は [プロジェクト構成](03-project-structure.md) と [Nunjucksの使い方](08-nunjucks.md) も参照してください。
|
|
41
|
+
|
|
42
|
+
## Page 構成
|
|
43
|
+
|
|
44
|
+
実際の Dashboard には次があります。
|
|
45
|
+
|
|
46
|
+
| 領域 | 内容 |
|
|
47
|
+
| ---- | ---- |
|
|
48
|
+
| page heading | 「Dashboard」と説明文 |
|
|
49
|
+
| breadcrumb | Portal → Dashboard |
|
|
50
|
+
| summary card | 4 枚(登録商品数 / 公開中 / 非公開 / 今月の更新) |
|
|
51
|
+
| 最近の更新 table | 5 行の静的データと status badge |
|
|
52
|
+
| お知らせ | notice リスト |
|
|
53
|
+
| 画面ナビ | Portal / CRUD / Wizard への移動 |
|
|
54
|
+
|
|
55
|
+
## Layout 継承
|
|
56
|
+
|
|
57
|
+
```nunjucks
|
|
58
|
+
{% extends "layouts/base.njk" %}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- 共通の HTML document 構造を使う
|
|
62
|
+
- header / sidebar / footer は layout 側で include
|
|
63
|
+
- page は `title` / `pageCss` / `content` block を埋める
|
|
64
|
+
- layout 自体は直接 output されない
|
|
65
|
+
|
|
66
|
+
Layout:
|
|
67
|
+
|
|
68
|
+
- [`layouts/base.njk`](../../src/sample/layouts/base.njk)
|
|
69
|
+
|
|
70
|
+
## Page 変数
|
|
71
|
+
|
|
72
|
+
```nunjucks
|
|
73
|
+
{% set currentSection = "dashboard" %}
|
|
74
|
+
{% set breadcrumbs = [
|
|
75
|
+
{ label: "Portal", href: rootPath + "index.html" },
|
|
76
|
+
{ label: "Dashboard" }
|
|
77
|
+
] %}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
| 変数 | 役割 |
|
|
81
|
+
| ---- | ---- |
|
|
82
|
+
| `currentSection` | sidebar の現在位置表示 |
|
|
83
|
+
| `breadcrumbs` | breadcrumb component の表示データ |
|
|
84
|
+
| `block title` | `<title>`(`Dashboard - {{ site.name }}`) |
|
|
85
|
+
|
|
86
|
+
## Summary と table
|
|
87
|
+
|
|
88
|
+
summary と最近の更新は、template 内の配列です。
|
|
89
|
+
|
|
90
|
+
```nunjucks
|
|
91
|
+
{% set summaryCards = [
|
|
92
|
+
{ label: "登録商品数", value: "120" },
|
|
93
|
+
{ label: "公開中", value: "98" },
|
|
94
|
+
{ label: "非公開", value: "22" },
|
|
95
|
+
{ label: "今月の更新", value: "15" }
|
|
96
|
+
] %}
|
|
97
|
+
|
|
98
|
+
{% for card in summaryCards %}
|
|
99
|
+
<article class="summary-card">
|
|
100
|
+
<p class="summary-card__label">{{ card.label }}</p>
|
|
101
|
+
<p class="summary-card__value">{{ card.value }}</p>
|
|
102
|
+
</article>
|
|
103
|
+
{% endfor %}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- 外部 API の応答ではない
|
|
107
|
+
- 繰り返す HTML を短く書く例
|
|
108
|
+
- 実際の application では、backend や build 前のデータ生成など、別の仕組みが必要
|
|
109
|
+
|
|
110
|
+
JSKim 自体は API を提供しません。
|
|
111
|
+
|
|
112
|
+
## Status 分岐
|
|
113
|
+
|
|
114
|
+
```nunjucks
|
|
115
|
+
{% if item.status == "公開" %}
|
|
116
|
+
<span class="badge badge--public">公開</span>
|
|
117
|
+
{% elif item.status == "非公開" %}
|
|
118
|
+
<span class="badge badge--private">非公開</span>
|
|
119
|
+
{% else %}
|
|
120
|
+
<span class="badge badge--draft">下書き</span>
|
|
121
|
+
{% endif %}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
class とテキストの両方で状態を示します。色だけに頼らない書き方です。
|
|
125
|
+
|
|
126
|
+
## Asset
|
|
127
|
+
|
|
128
|
+
共通 CSS(layout):
|
|
129
|
+
|
|
130
|
+
```nunjucks
|
|
131
|
+
{{ rootPath }}assets/css/common.css
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Dashboard CSS(page):
|
|
135
|
+
|
|
136
|
+
```html
|
|
137
|
+
<link rel="stylesheet" href="assets/css/dashboard.css">
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
| source | 処理 | output |
|
|
141
|
+
| ------ | ---- | ------ |
|
|
142
|
+
| `pages/assets/css/common.css` | copy | `assets/css/common.css` |
|
|
143
|
+
| `pages/dashboard/assets/css/dashboard.css` | copy | `dashboard/assets/css/dashboard.css` |
|
|
144
|
+
|
|
145
|
+
`rootPath` の詳細は [files pipeline](07-files-pipeline.md) を参照してください。
|
|
146
|
+
|
|
147
|
+
## Build output
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
dist/sample/dashboard/index.html
|
|
151
|
+
dist/sample/dashboard/assets/css/dashboard.css
|
|
152
|
+
dist/sample/assets/css/common.css
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## 修正例
|
|
156
|
+
|
|
157
|
+
| 変えたいもの | 編集先 |
|
|
158
|
+
| ------------ | ------ |
|
|
159
|
+
| summary の label / value | `pages/dashboard/index.html.njk` の `summaryCards` |
|
|
160
|
+
| table の行 | 同 file の `recentUpdates` |
|
|
161
|
+
| お知らせ文 | 同 file の `notices` |
|
|
162
|
+
| Dashboard 専用の見た目 | `pages/dashboard/assets/css/dashboard.css` |
|
|
163
|
+
|
|
164
|
+
保存後、`npm run dev` で確認できます。
|
|
165
|
+
|
|
166
|
+
## 新しい Dashboard page への拡張
|
|
167
|
+
|
|
168
|
+
最小の手順例:
|
|
169
|
+
|
|
170
|
+
1. 新しい `.html.njk` を `pages/` 配下に作る(または既存 page を参考にする)
|
|
171
|
+
2. `{% extends "layouts/base.njk" %}` する
|
|
172
|
+
3. `currentSection` / `breadcrumbs` を設定する
|
|
173
|
+
4. `content` block を書く
|
|
174
|
+
5. 必要なら page-local CSS を置く
|
|
175
|
+
6. `dev` または `build` で確認する
|
|
176
|
+
|
|
177
|
+
自動 generator や専用のコピーコマンドはありません。
|
|
178
|
+
|
|
179
|
+
## Sample の限界
|
|
180
|
+
|
|
181
|
+
- 実際の統計計算はない
|
|
182
|
+
- API / database はない
|
|
183
|
+
- chart library はない
|
|
184
|
+
- 認証はない
|
|
185
|
+
- 値は静的 sample
|
|
186
|
+
|
|
187
|
+
製品としての制限は [制限事項](14-limitations.md) を参照してください。
|
|
188
|
+
類似の画面構成として [CRUD例](12-crud-example.md) と [Wizard例](13-wizard-example.md) もあります。
|