@ywal123456/jskim 0.5.1 → 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.
@@ -0,0 +1,357 @@
1
+ # 設定
2
+
3
+ この章では、`jskim.config.js` で設定できる項目を説明します。
4
+ 既存の詳細 reference として [docs/configuration.md](../configuration.md) もありますが、ここでは初学者向けの順で整理します。
5
+
6
+ ## 設定ファイル
7
+
8
+ ファイル名はワークスペースルートの `jskim.config.js` です。
9
+ コマンドを実行したディレクトリ(`process.cwd()`)をルートとして読みます。
10
+
11
+ 形式は CommonJS です。
12
+
13
+ ```js
14
+ module.exports = {
15
+ defaults: {
16
+ // 全 project 共通の既定値
17
+ },
18
+ projects: {
19
+ // project 名ごとの設定
20
+ },
21
+ };
22
+ ```
23
+
24
+ ESM(`export default`)はサポートしていません。
25
+
26
+ ## 最小の設定例
27
+
28
+ 必須なのは、少なくとも 1 件の project と、その `sourceDir` / `outputDir` です。
29
+ 加えて、files mode では `files`、legacy mode では `render` が必要です。
30
+
31
+ 推奨の最小例(files mode):
32
+
33
+ ```js
34
+ module.exports = {
35
+ defaults: {
36
+ files: [{ from: 'pages', to: '' }],
37
+ templates: ['layouts', 'components'],
38
+ },
39
+ projects: {
40
+ sample: {
41
+ sourceDir: 'src/sample',
42
+ outputDir: 'dist/sample',
43
+ },
44
+ },
45
+ };
46
+ ```
47
+
48
+ | key | 必須 | 備考 |
49
+ | --- | ---- | ---- |
50
+ | `projects` | 必須 | オブジェクト。1 件以上を推奨 |
51
+ | `defaults` | 任意 | 省略時は空オブジェクト扱い |
52
+ | `sourceDir` / `outputDir` | project ごとに必須 | `defaults` 側に置いても可 |
53
+ | `files` または `render` | mode に応じて必須 | 同時設定は不可 |
54
+
55
+ ## 公式 sample の設定
56
+
57
+ この repository の設定は [jskim.config.js](../../jskim.config.js) です。
58
+ 理解に必要な部分だけ抜粋します(filter / global の実装全体は省略しています)。
59
+
60
+ ```js
61
+ module.exports = {
62
+ defaults: {
63
+ files: [{ from: 'pages', to: '' }],
64
+ templates: ['layouts', 'components'],
65
+ data: {
66
+ site: {
67
+ name: 'JSKim UI Sample',
68
+ language: 'ja',
69
+ themeColor: '#222222',
70
+ },
71
+ samplePrice: 12000,
72
+ },
73
+ // nunjucks.filters / nunjucks.globals も定義できる
74
+ build: { clean: true },
75
+ watch: { debounce: 150 },
76
+ serve: { host: '127.0.0.1', port: 3000 },
77
+ dev: { liveReload: true },
78
+ },
79
+ projects: {
80
+ sample: {
81
+ sourceDir: 'src/sample',
82
+ outputDir: 'dist/sample',
83
+ },
84
+ },
85
+ };
86
+ ```
87
+
88
+ ## トップレベルの構造
89
+
90
+ 読み込み時に必須検査されるのは次です。
91
+
92
+ | key | 型 | 必須 | 説明 |
93
+ | --- | -- | ---- | ---- |
94
+ | `projects` | object | 必須 | project 名 → 設定 |
95
+ | `defaults` | object | 任意 | 全 project への共通既定値 |
96
+
97
+ それ以外のトップレベル key は、現在の loader では必須ではありません。
98
+ 実際の build 設定は `defaults` と各 `projects.*` をマージして使います。
99
+
100
+ ## projects
101
+
102
+ `projects` は名前付き project の一覧です。
103
+
104
+ ```js
105
+ projects: {
106
+ sample: { sourceDir: 'src/sample', outputDir: 'dist/sample' },
107
+ docs: { sourceDir: 'src/docs', outputDir: 'dist/docs' },
108
+ }
109
+ ```
110
+
111
+ - 各 project は独立した `sourceDir` / `outputDir` を持てます
112
+ - CLI の project 引数はこのキー名を指します
113
+ - 空の `projects` だとコマンド実行時にエラーになります
114
+
115
+ 名前の文字種に特別な禁止規則はありませんが、CLI 引数として扱いやすい英数字名を推奨します。
116
+
117
+ ## sourceDir
118
+
119
+ | 項目 | 内容 |
120
+ | ---- | ---- |
121
+ | 型 | string |
122
+ | 必須 | はい(マージ後) |
123
+ | 既定値 | なし |
124
+ | 基準 | ワークスペースルート(`process.cwd()`) |
125
+ | 検証 | 空不可。実在するディレクトリであること |
126
+ | 役割 | source のルート |
127
+
128
+ ## outputDir
129
+
130
+ | 項目 | 内容 |
131
+ | ---- | ---- |
132
+ | 型 | string |
133
+ | 必須 | はい(マージ後) |
134
+ | 既定値 | なし |
135
+ | 基準 | ワークスペースルート |
136
+ | 検証 | 空不可 |
137
+ | 役割 | build 結果のルート。`serve` / `dev` の公開ルートでもある |
138
+
139
+ 注意点:
140
+
141
+ - `build.clean` が `true` のとき、build 前に削除されることがあります
142
+ - 手編集した output は次の build で上書きされることがあります
143
+ - `build --all` では、複数 project の `outputDir` が同一または入れ子だと開始前に中断します
144
+
145
+ ## files
146
+
147
+ 推奨の files pipeline 設定です。配列で、各 entry は次のフィールドを持ちます。
148
+
149
+ | field | 基準 | 必須 | 既定 | 説明 |
150
+ | ----- | ---- | ---- | ---- | ---- |
151
+ | `from` | `sourceDir` | 必須 | — | 探索開始ディレクトリ |
152
+ | `to` | `outputDir` | 任意 | `''` | 出力基準。空なら output ルート |
153
+ | `include` | `from` | 任意 | `['**/*']` | 取り込み glob |
154
+ | `exclude` | `from` | 任意 | `[]` | 除外 glob |
155
+
156
+ 例:
157
+
158
+ ```js
159
+ files: [
160
+ {
161
+ from: 'pages',
162
+ to: '',
163
+ },
164
+ ]
165
+ ```
166
+
167
+ - 複数 entry を書けます
168
+ - 同じ output path が複数 source から生成されるとエラーです
169
+ - `files` を空配列にすると files mode にはなりません(legacy 判定側へ)
170
+ - `files` と `render` / `copy` の同時設定はできません
171
+
172
+ 処理の詳細は [files pipeline](07-files-pipeline.md) を参照してください。
173
+
174
+ ## templates
175
+
176
+ | 項目 | 内容 |
177
+ | ---- | ---- |
178
+ | 型 | string の配列 |
179
+ | 必須 | 任意 |
180
+ | 既定値 | `[]` |
181
+ | 基準 | `sourceDir` |
182
+ | 役割 | Nunjucks loader の追加検索パス |
183
+
184
+ 例:
185
+
186
+ ```js
187
+ templates: ['layouts', 'components'],
188
+ ```
189
+
190
+ - `extends` / `include` の解決に使います
191
+ - 実在するディレクトリ配下は、files mode では **直接 output しません**
192
+ - `sourceDir` 自体も loader root に含まれます
193
+
194
+ ## data
195
+
196
+ | 項目 | 内容 |
197
+ | ---- | ---- |
198
+ | 型 | plain object(`null` 可) |
199
+ | 必須 | 任意 |
200
+ | 既定値 | 空に近い扱い(マージ結果) |
201
+ | 役割 | すべての Nunjucks render context に渡す共通データ |
202
+
203
+ 公式 sample では `site.name` などを渡しています。
204
+
205
+ > **Warning**
206
+ >
207
+ > `data.rootPath` は予約語です。設定するとエラーになります。
208
+ > `rootPath` は JSKim が各ページへ自動注入します。
209
+
210
+ ## build 設定
211
+
212
+ | path | 型 | 既定 | 説明 |
213
+ | ---- | -- | ---- | ---- |
214
+ | `build.clean` | boolean | `true` | build 前に `outputDir` を削除する |
215
+
216
+ ## watch 設定
217
+
218
+ | path | 型 | 既定 | 説明 |
219
+ | ---- | -- | ---- | ---- |
220
+ | `watch.debounce` | number(0 以上) | `150` | 最後の変更から再 build までの待ち時間(ミリ秒) |
221
+
222
+ ## serve 設定
223
+
224
+ | path | 型 | 既定 | 説明 |
225
+ | ---- | -- | ---- | ---- |
226
+ | `serve.host` | string(空不可) | `'127.0.0.1'` | 待ち受け host |
227
+ | `serve.port` | 整数 1〜65535 | `3000` | 待ち受け port |
228
+
229
+ CLI の `--host` / `--port` がある場合は、CLI が優先されます。
230
+
231
+ ## dev 設定
232
+
233
+ | path | 型 | 既定 | 説明 |
234
+ | ---- | -- | ---- | ---- |
235
+ | `dev.liveReload` | boolean | `true` | 開発中の live reload を有効にする |
236
+
237
+ ## filters と globals
238
+
239
+ カスタム Nunjucks 機能は `nunjucks` 配下に書きます。
240
+
241
+ ```js
242
+ nunjucks: {
243
+ filters: {
244
+ formatPrice(value) {
245
+ return `${Number(value).toLocaleString('ja-JP')}円`;
246
+ },
247
+ },
248
+ globals: {
249
+ currentYear() {
250
+ return new Date().getFullYear();
251
+ },
252
+ },
253
+ }
254
+ ```
255
+
256
+ - `filters` の値は **function** である必要があります
257
+ - JavaScript の関数として定義します(JSON では書けません)
258
+ - 公式 sample はデモ用に定義していますが、必須ではありません
259
+ - 非同期 filter は現在サポートしていません
260
+
261
+ 書き方の詳細は [Nunjucksの使い方](08-nunjucks.md) を参照してください。
262
+
263
+ ## 全体 option reference
264
+
265
+ ### トップレベル
266
+
267
+ | path | 型 | 必須 | 既定 | 説明 |
268
+ | ---- | -- | ---- | ---- | ---- |
269
+ | `projects` | object | 必須 | — | project 定義 |
270
+ | `defaults` | object | 任意 | `{}` | 共通既定値 |
271
+
272
+ ### project / defaults で使う主な key
273
+
274
+ | path | 型 | 必須 | 既定 | 説明 |
275
+ | ---- | -- | ---- | ---- | ---- |
276
+ | `sourceDir` | string | 必須 | — | source ルート |
277
+ | `outputDir` | string | 必須 | — | output ルート |
278
+ | `files` | object[] \| 未設定 | mode 依存 | 未設定は `null` | files pipeline |
279
+ | `templates` | string[] | 任意 | `[]` | template 検索パス |
280
+ | `render` | object[] | legacy 時 | `[]` | legacy render |
281
+ | `copy` | object[] | 任意 | `[]` | legacy copy |
282
+ | `data` | object \| null | 任意 | — | 共通 template データ |
283
+ | `nunjucks.filters` | object | 任意 | `{}` | カスタム filter |
284
+ | `nunjucks.globals` | object | 任意 | `{}` | カスタム global |
285
+ | `build.clean` | boolean | 任意 | `true` | output を clean |
286
+ | `watch.debounce` | number | 任意 | `150` | 監視の debounce(ms) |
287
+ | `serve.host` | string | 任意 | `'127.0.0.1'` | サーバー host |
288
+ | `serve.port` | number | 任意 | `3000` | サーバー port |
289
+ | `dev.liveReload` | boolean | 任意 | `true` | live reload |
290
+
291
+ legacy の `render` / `copy` 詳細は [docs/configuration.md](../configuration.md) も参照してください。
292
+ 新規 project では `files` を推奨します。
293
+
294
+ ## 検証と unknown key
295
+
296
+ 主な検証例:
297
+
298
+ - 必須 key の欠落
299
+ - 型不正(例: `serve.port` が範囲外)
300
+ - `files` と `render` / `copy` の同時設定
301
+ - `data.rootPath` の予約衝突
302
+ - path traversal(`sourceDir` / `outputDir` の外へ出る設定)
303
+
304
+ 認識していない余分な key は、現在の実装ではエラーにせず無視されることがあります。
305
+ 厳密な schema エンジンではありません。
306
+
307
+ エラー時の具体メッセージと復旧手順は [エラーとトラブルシュート](10-errors-and-troubleshooting.md) を参照してください。
308
+
309
+ ## 設定変更の反映
310
+
311
+ | command | config の読み方 |
312
+ | ------- | ---------------- |
313
+ | `build` | 開始時に 1 回 |
314
+ | `serve` | 開始時に 1 回(監視しない) |
315
+ | `watch` / `dev` | 開始時に読み、実行中の変更も検知できる |
316
+
317
+ `dev` では、次の値が変わると process 再起動が必要です。
318
+
319
+ - `outputDir`
320
+ - `serve.host`
321
+ - `serve.port`
322
+ - `dev.liveReload`
323
+
324
+ CLI で指定した `--host` / `--port` は、reload 後も維持されます。
325
+ 不正な config を書いた場合は、直前まで有効だった設定を維持する動作があります。
326
+
327
+ 詳細な hot reload の挙動は [開発機能](09-development-features.md) を参照してください。
328
+
329
+ ## 複数 project の例
330
+
331
+ `outputDir` が衝突しないように分けます。
332
+
333
+ ```js
334
+ module.exports = {
335
+ defaults: {
336
+ files: [{ from: 'pages', to: '' }],
337
+ templates: ['layouts', 'components'],
338
+ serve: { host: '127.0.0.1', port: 3000 },
339
+ },
340
+ projects: {
341
+ siteA: {
342
+ sourceDir: 'src/site-a',
343
+ outputDir: 'dist/site-a',
344
+ },
345
+ siteB: {
346
+ sourceDir: 'src/site-b',
347
+ outputDir: 'dist/site-b',
348
+ },
349
+ },
350
+ };
351
+ ```
352
+
353
+ ```bash
354
+ jskim build siteA
355
+ jskim build --all
356
+ jskim dev siteB --port 4000
357
+ ```
@@ -0,0 +1,278 @@
1
+ # files pipeline
2
+
3
+ この章では、JSKim が source を output に変換する files pipeline の規則を説明します。
4
+ 公式 sample の配置は [プロジェクト構成](03-project-structure.md) もあわせて参照してください。
5
+
6
+ ## pipeline の概要
7
+
8
+ 推奨設定では、`files` の各 entry から処理計画を作ります。
9
+
10
+ ```text
11
+ files[].from 配下を探索
12
+
13
+ ├─ 末尾が .njk ── Nunjucks render ── output(.njk を外す)
14
+ └─ それ以外 ──── byte copy ──────── output
15
+ ```
16
+
17
+ `templates` に指定した実在ディレクトリ配下は、計画から除外され、直接 output されません。
18
+
19
+ ## files entry
20
+
21
+ 公式 sample の設定:
22
+
23
+ ```js
24
+ files: [
25
+ {
26
+ from: 'pages',
27
+ to: '',
28
+ },
29
+ ]
30
+ ```
31
+
32
+ | field | 意味 |
33
+ | ----- | ---- |
34
+ | `from: 'pages'` | `sourceDir/pages` を探索する |
35
+ | `to: ''` | `outputDir` ルートへ出す |
36
+
37
+ そのため、例えば次のように対応します。
38
+
39
+ ```text
40
+ src/sample/pages/index.html.njk
41
+ → dist/sample/index.html
42
+ ```
43
+
44
+ ## render 対象
45
+
46
+ 判定は **パス末尾が `.njk`(小文字)かどうか** です。
47
+
48
+ | source | 処理 |
49
+ | ------ | ---- |
50
+ | `index.html.njk` | render → `index.html` |
51
+ | `style.css.njk` | render → `style.css` |
52
+ | `main.js.njk` | render → `main.js` |
53
+ | `common.css` | copy |
54
+ | `logo.svg` | copy |
55
+ | `note.NJK` | copy(末尾が `.njk` ではない) |
56
+
57
+ > **Note**
58
+ >
59
+ > 判定は case-sensitive です。`.NJK` や `.Njk` は render しません。
60
+
61
+ ディレクトリ自体は出力対象ではなく、配下のファイルが対象です。
62
+
63
+ ## output のファイル名
64
+
65
+ render 時は、末尾の `.njk` **4 文字だけ** を外します。
66
+
67
+ ```text
68
+ index.html.njk → index.html
69
+ style.css.njk → style.css
70
+ main.js.njk → main.js
71
+ ```
72
+
73
+ > **Note**
74
+ >
75
+ > `example.njk.njk` のように二重になっている場合も、末尾の 1 回分だけ外します。
76
+ > 結果のファイル名は `example.njk` になります。
77
+
78
+ ## copy 対象
79
+
80
+ 末尾が `.njk` でないファイルは byte copy します。
81
+
82
+ - 内容を変換しません
83
+ - 文字コード変換も行いません
84
+ - 公式 sample の平文 CSS や SVG がこれに当たります
85
+
86
+ 例:
87
+
88
+ - [common.css](../../src/sample/pages/assets/css/common.css)
89
+ - [logo.svg](../../src/sample/pages/assets/img/logo.svg)
90
+
91
+ ## directory 構造の維持
92
+
93
+ `from` 配下の相対パスは、`to` 基準で output 側にも維持されます。
94
+
95
+ ```text
96
+ pages/crud/detail.html.njk
97
+ → dist/sample/crud/detail.html
98
+
99
+ pages/dashboard/assets/css/dashboard.css
100
+ → dist/sample/dashboard/assets/css/dashboard.css
101
+ ```
102
+
103
+ ## template root
104
+
105
+ 次の設定があるとき、`layouts` と `components` は template root です。
106
+
107
+ ```js
108
+ templates: [
109
+ 'layouts',
110
+ 'components',
111
+ ]
112
+ ```
113
+
114
+ 用途:
115
+
116
+ - `{% extends "layouts/base.njk" %}`
117
+ - `{% include "components/header.njk" %}`
118
+
119
+ これらは配布用 HTML としては直接生成されません。
120
+ 例: [base.njk](../../src/sample/layouts/base.njk)
121
+
122
+ ## rootPath
123
+
124
+ 各 render ページには、output 上の位置から `outputDir` ルートへ戻る相対パス `rootPath` が入ります。
125
+
126
+ 計算の考え方:
127
+
128
+ 1. output ファイルのディレクトリから `outputDir` への相対パスを取る
129
+ 2. HTML 用に `/` 区切りにする
130
+ 3. 空なら `./` にする(末尾に `/` を付ける)
131
+
132
+ 公式 sample(`outputDir = dist/sample`)での例:
133
+
134
+ | output page | `rootPath` |
135
+ | ----------- | ---------- |
136
+ | `index.html` | `./` |
137
+ | `dashboard/index.html` | `../` |
138
+ | `crud/detail.html` | `../` |
139
+ | さらに深い階層(例: `a/b/c.html`) | `../../` |
140
+
141
+ 共通 asset の参照例(layout):
142
+
143
+ ```nunjucks
144
+ <link rel="stylesheet" href="{{ rootPath }}assets/css/common.css">
145
+ ```
146
+
147
+ `data.rootPath` で上書きすることはできません。
148
+
149
+ ## 共通 asset と page-local asset
150
+
151
+ ### 共通 asset
152
+
153
+ ```text
154
+ pages/assets/css/common.css
155
+ → assets/css/common.css
156
+ ```
157
+
158
+ 深い階層のページからも同じ場所を指すため、`rootPath` を使います。
159
+
160
+ ```nunjucks
161
+ {{ rootPath }}assets/css/common.css
162
+ ```
163
+
164
+ ### page-local asset
165
+
166
+ ```text
167
+ pages/crud/assets/css/crud.css
168
+ → crud/assets/css/crud.css
169
+ ```
170
+
171
+ 同じ画面グループからの相対パスで参照します。
172
+
173
+ ```html
174
+ <link rel="stylesheet" href="assets/css/crud.css">
175
+ ```
176
+
177
+ > **Warning**
178
+ >
179
+ > page-local CSS に `rootPath` を付けないでください。
180
+ >
181
+ > ```nunjucks
182
+ > {{ rootPath }}assets/css/crud.css
183
+ > ```
184
+ >
185
+ > これは output root の `assets/css/crud.css` を指します。
186
+ > 実際のファイルは `crud/assets/css/crud.css` にあるため、パスがずれます。
187
+
188
+ | 種類 | 置き場所 | 参照 |
189
+ | ---- | -------- | ---- |
190
+ | 共通 | `pages/assets/...` | `{{ rootPath }}assets/...` |
191
+ | page-local | `pages/<group>/assets/...` | `assets/...`(相対) |
192
+
193
+ 実例:
194
+
195
+ - 共通: [common.css](../../src/sample/pages/assets/css/common.css)
196
+ - Dashboard: [dashboard.css](../../src/sample/pages/dashboard/assets/css/dashboard.css)
197
+ - CRUD: [crud.css](../../src/sample/pages/crud/assets/css/crud.css)
198
+ - Wizard: [wizard.css](../../src/sample/pages/wizard/assets/css/wizard.css)
199
+
200
+ ## 複数の files entry
201
+
202
+ 複数の entry を書くと、それぞれの計画が結合されます。
203
+
204
+ ```js
205
+ files: [
206
+ { from: 'pages', to: '' },
207
+ { from: 'shared-images', to: 'assets/img' },
208
+ ]
209
+ ```
210
+
211
+ 別々の source を、異なる output 位置へ出せます。
212
+ ただし最終的な output path が同じになると衝突エラーになります。
213
+
214
+ ## output の衝突
215
+
216
+ 次のような場合、build は失敗します。
217
+
218
+ - 2 つの source が同じ output path を生成する
219
+ - `main.js` と `main.js.njk` のように、suffix 除去後に同じパスになる
220
+ - Windows で大文字小文字だけが違う path(同一扱いになり衝突)
221
+
222
+ 衝突は、ファイルを書き始める前の計画段階で検出されます。
223
+ エラーメッセージの読み方は [エラーとトラブルシュート](10-errors-and-troubleshooting.md) を参照してください。
224
+
225
+ ## clean
226
+
227
+ `build.clean` の既定値は `true` です。
228
+
229
+ | 値 | 動作 |
230
+ | -- | ---- |
231
+ | `true` | build 前に `outputDir` を削除してから再生成 |
232
+ | `false` | 既存ファイルを残したまま上書き生成 |
233
+
234
+ `watch` / `dev` の再 build でも、`clean: true` なら毎回フル clean + 全体再 build です。
235
+ そのため、source から消したファイルは、次の成功 build で output からも消えます。
236
+
237
+ 危険な `outputDir`(ワークスペースルート全体など)への clean は拒否されます。
238
+
239
+ ## watch 中の変更・削除
240
+
241
+ 概要のみ示します。
242
+
243
+ | 変化 | 結果の考え方 |
244
+ | ---- | ------------ |
245
+ | ファイル修正 | 再 build で output 更新 |
246
+ | 新規ファイル | 再 build で追加 |
247
+ | 削除 | `clean: true` なら output からも消える |
248
+ | layout / component 変更 | 依存ページも含めて再 build |
249
+ | config 変更 | `watch` / `dev` では検知できる(詳細は [開発機能](09-development-features.md)) |
250
+
251
+ debounce や live reload の詳細は [開発機能](09-development-features.md) を参照してください。
252
+
253
+ ## 安全な asset 配置の目安
254
+
255
+ | 目的 | 置き場所 / 命名 |
256
+ | ---- | ---------------- |
257
+ | 全ページ共通 | `pages/assets/` |
258
+ | 特定画面群だけ | その画面群の `assets/` |
259
+ | Nunjucks で生成したい CSS / JS | 末尾に `.njk`(例: `style.css.njk`) |
260
+ | そのままコピーしたいファイル | 平文の拡張子(例: `common.css`, `logo.svg`) |
261
+ | layout / component | `templates` に指定した root |
262
+
263
+ ## 公式 sample の対応表
264
+
265
+ | source | 処理 | output |
266
+ | ------ | ---- | ------ |
267
+ | `pages/index.html.njk` | render | `index.html` |
268
+ | `pages/dashboard/index.html.njk` | render | `dashboard/index.html` |
269
+ | `pages/dashboard/assets/css/dashboard.css` | copy | `dashboard/assets/css/dashboard.css` |
270
+ | `pages/crud/detail.html.njk` | render | `crud/detail.html` |
271
+ | `pages/crud/assets/css/crud.css` | copy | `crud/assets/css/crud.css` |
272
+ | `pages/wizard/assets/css/wizard.css` | copy | `wizard/assets/css/wizard.css` |
273
+ | `pages/assets/css/common.css` | copy | `assets/css/common.css` |
274
+ | `pages/assets/img/logo.svg` | copy | `assets/img/logo.svg` |
275
+ | `layouts/base.njk` | template | 直接 output なし |
276
+ | `components/header.njk` | template | 直接 output なし |
277
+
278
+ 設定の全体像は [設定](06-configuration.md)、コマンド操作は [CLIリファレンス](05-cli-reference.md) を参照してください。