create-pugkit 1.0.0-beta.1
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 +44 -0
- package/cli/index.mjs +113 -0
- package/package.json +45 -0
- package/template/.browserslistrc +20 -0
- package/template/.prettierrc.mjs +48 -0
- package/template/package.json +24 -0
- package/template/pugkit.config.mjs +38 -0
- package/template/src/_templates/_constants.pug +14 -0
- package/template/src/_templates/_layout.pug +42 -0
- package/template/src/_templates/components/_footer.pug +2 -0
- package/template/src/_templates/components/_header.pug +9 -0
- package/template/src/_templates/mixins/_Image.pug +103 -0
- package/template/src/_templates/mixins/_Meta.pug +38 -0
- package/template/src/about/index.pug +26 -0
- package/template/src/assets/css/style.scss +258 -0
- package/template/src/assets/js/main.js +11 -0
- package/template/src/index.pug +30 -0
- package/template/stylelint.config.mjs +532 -0
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stylelint Configuration
|
|
3
|
+
* モダンなCSS/SCSSのための厳格なリントルール設定
|
|
4
|
+
*
|
|
5
|
+
* @see https://stylelint.io/user-guide/configure
|
|
6
|
+
*/
|
|
7
|
+
export default {
|
|
8
|
+
extends: ['stylelint-config-standard-scss', 'stylelint-config-recess-order'],
|
|
9
|
+
|
|
10
|
+
ignoreFiles: [
|
|
11
|
+
'**/*.js',
|
|
12
|
+
'**/*.ts',
|
|
13
|
+
'**/*.html',
|
|
14
|
+
'**/*.pug',
|
|
15
|
+
'**/*.json',
|
|
16
|
+
'**/*.md',
|
|
17
|
+
'**/node_modules/**',
|
|
18
|
+
'**/dist/**',
|
|
19
|
+
'**/.git/**'
|
|
20
|
+
],
|
|
21
|
+
|
|
22
|
+
rules: {
|
|
23
|
+
// ========================================
|
|
24
|
+
// @ ルール
|
|
25
|
+
// ========================================
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @font-faceで必須プロパティを強制
|
|
29
|
+
* font-familyとsrcは必須
|
|
30
|
+
*/
|
|
31
|
+
'at-rule-property-required-list': {
|
|
32
|
+
'font-face': ['font-family', 'src']
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
// ========================================
|
|
36
|
+
// カラー
|
|
37
|
+
// ========================================
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 16進数カラーコードのアルファ値を禁止
|
|
41
|
+
* 理由: oklch()などのモダンなカラー関数を推奨
|
|
42
|
+
* NG: #ffffff80
|
|
43
|
+
* OK: oklch(from #fff l c h / 0.5)
|
|
44
|
+
*/
|
|
45
|
+
'color-hex-alpha': 'never',
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 名前付きカラーを禁止
|
|
49
|
+
* 理由: 一貫性のため16進数またはoklch()を使用
|
|
50
|
+
* NG: color: red;
|
|
51
|
+
* OK: color: #ff0000; または oklch(...)
|
|
52
|
+
*/
|
|
53
|
+
'color-named': [
|
|
54
|
+
'never',
|
|
55
|
+
{
|
|
56
|
+
message: '名前付きカラー(red, blue等)は禁止です。16進数(#ff0000)またはoklch()を使用してください'
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 無効な16進数カラーコードを禁止
|
|
62
|
+
*/
|
|
63
|
+
'color-no-invalid-hex': true,
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* モダンなカラー関数記法を強制
|
|
67
|
+
* 理由: oklch(), lab()などのCSS Color Module Level 4を推奨
|
|
68
|
+
* NG: rgb(255, 0, 0)
|
|
69
|
+
* OK: oklch(0.628 0.258 29.23)
|
|
70
|
+
*/
|
|
71
|
+
'color-function-notation': [
|
|
72
|
+
'modern',
|
|
73
|
+
{
|
|
74
|
+
message: '古い形式のカラー関数(rgb(255, 0, 0))ではなく、モダンな形式(oklch(...))を使用してください'
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 色相角度の単位を明示
|
|
80
|
+
* 理由: oklch()使用時の可読性向上
|
|
81
|
+
* OK: oklch(0% 0 0deg / 0.3)
|
|
82
|
+
*/
|
|
83
|
+
'hue-degree-notation': 'angle',
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* アルファ値を数値形式で統一
|
|
87
|
+
* 理由: プロジェクトでは0.5形式を100%使用
|
|
88
|
+
* NG: oklch(... / 50%)
|
|
89
|
+
* OK: oklch(... / 0.5)
|
|
90
|
+
*/
|
|
91
|
+
'alpha-value-notation': [
|
|
92
|
+
'number',
|
|
93
|
+
{
|
|
94
|
+
message: 'アルファ値はパーセント(50%)ではなく数値(0.5)で指定してください'
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
|
|
98
|
+
// ========================================
|
|
99
|
+
// ネスト・セレクタ
|
|
100
|
+
// ========================================
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* ネストの深さを3階層までに制限
|
|
104
|
+
* 理由: プロジェクトの実態(最大3階層)に合わせた設定
|
|
105
|
+
* BEM構造を採用しているため、深いネストは不要
|
|
106
|
+
*/
|
|
107
|
+
'max-nesting-depth': [
|
|
108
|
+
3,
|
|
109
|
+
{
|
|
110
|
+
ignore: ['blockless-at-rules', 'pseudo-classes'],
|
|
111
|
+
message: 'ネストの深さは3階層までです。BEM構造を見直してください'
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* タイプセレクタによる修飾を禁止
|
|
117
|
+
* 理由: 詳細度の肥大化を防ぐ
|
|
118
|
+
* NG: div.class, a#id
|
|
119
|
+
* OK: .class, .class[data-attr]
|
|
120
|
+
*/
|
|
121
|
+
'selector-no-qualifying-type': [
|
|
122
|
+
true,
|
|
123
|
+
{
|
|
124
|
+
ignore: ['attribute', 'class'],
|
|
125
|
+
message: 'タグ名でクラスやIDを修飾しないでください(例: div.class → .class)'
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* IDセレクタを完全禁止
|
|
131
|
+
* 理由: モダンなCSS設計(BEM)ではIDセレクタを使用しない
|
|
132
|
+
*/
|
|
133
|
+
'selector-max-id': [
|
|
134
|
+
0,
|
|
135
|
+
{
|
|
136
|
+
message: 'IDセレクタ(#id)は使用できません。クラスセレクタ(.class)を使用してください'
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* ユニバーサルセレクタの使用を制限
|
|
142
|
+
* 理由: パフォーマンス上の問題を防ぐ
|
|
143
|
+
* OK: .class + *(隣接セレクタ後は許可)
|
|
144
|
+
*/
|
|
145
|
+
'selector-max-universal': [
|
|
146
|
+
1,
|
|
147
|
+
{
|
|
148
|
+
ignoreAfterCombinators: ['+']
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 疑似要素にダブルコロン記法を強制
|
|
154
|
+
* 理由: 疑似クラスとの区別を明確に
|
|
155
|
+
* NG: :before
|
|
156
|
+
* OK: ::before
|
|
157
|
+
*/
|
|
158
|
+
'selector-pseudo-element-colon-notation': 'double',
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* 未知の疑似要素を禁止(例外あり)
|
|
162
|
+
*/
|
|
163
|
+
'selector-pseudo-element-no-unknown': [
|
|
164
|
+
true,
|
|
165
|
+
{
|
|
166
|
+
ignorePseudoElements: ['scroll-button']
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* 詳細度の降順を許可
|
|
172
|
+
* 理由: BEM構造では詳細度管理が明確なため不要
|
|
173
|
+
*/
|
|
174
|
+
'no-descending-specificity': null,
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* 重複セレクタを禁止
|
|
178
|
+
* 理由: コードの保守性向上
|
|
179
|
+
*/
|
|
180
|
+
'no-duplicate-selectors': null,
|
|
181
|
+
|
|
182
|
+
// ========================================
|
|
183
|
+
// 命名規則
|
|
184
|
+
// ========================================
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* カスタムプロパティの命名規則
|
|
188
|
+
* パターン: --name, --_name(プライベート変数)
|
|
189
|
+
* 例: --color-primary, --_space
|
|
190
|
+
*/
|
|
191
|
+
'custom-property-pattern': '^(_)?[a-z][a-z0-9]*(-[a-z0-9]+)*$',
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* !importantの使用を禁止
|
|
195
|
+
* 理由: 詳細度を適切に管理することで解決すべき
|
|
196
|
+
* 注意: ユーティリティクラスや外部ライブラリの上書きなど、
|
|
197
|
+
* プロジェクトの方針で例外を認める場合は手動でルール無効化が必要
|
|
198
|
+
*/
|
|
199
|
+
'declaration-no-important': [
|
|
200
|
+
true,
|
|
201
|
+
{
|
|
202
|
+
message: '!importantは使用できません。詳細度を適切に管理してください'
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* クラス名の命名規則(BEM)
|
|
208
|
+
* パターン:
|
|
209
|
+
* - BEM Element: __element
|
|
210
|
+
* - BEM Modifier: --modifier
|
|
211
|
+
* - ハイフン区切り: kebab-case
|
|
212
|
+
*
|
|
213
|
+
* 例:
|
|
214
|
+
* - .button
|
|
215
|
+
* - .button__anchor
|
|
216
|
+
* - .button--primary
|
|
217
|
+
* - .about-banner
|
|
218
|
+
*/
|
|
219
|
+
'selector-class-pattern':
|
|
220
|
+
'^[a-z][a-z0-9]*(-[a-z0-9]+)*(__[a-z][a-z0-9]*(-[a-z0-9]+)*)?(--[a-z][a-z0-9]*(-[a-z0-9]+)*)?$',
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* z-indexの値を制限
|
|
224
|
+
* 理由: 重なり順の管理を簡素化
|
|
225
|
+
* OK: z-index: 1, z-index: -1, z-index: var(--z-index), z-index: calc(...)
|
|
226
|
+
* NG: z-index: 999, z-index: 10, z-index: 2
|
|
227
|
+
*/
|
|
228
|
+
'declaration-property-value-allowed-list': [
|
|
229
|
+
{
|
|
230
|
+
'z-index': ['/^-?1$/', '/^var\(--/', '/^calc\(/']
|
|
231
|
+
/**
|
|
232
|
+
* text-alignプロパティの値を制限
|
|
233
|
+
* 理由: 国際化対応(書字方向に依存しない設計)
|
|
234
|
+
* OK: text-align: start, text-align: end, text-align: center, text-align: justify, text-align: unset
|
|
235
|
+
* NG: text-align: left, text-align: right(LTR/RTL文字列混在時に非対応)
|
|
236
|
+
*/
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
message: (value, property) => {
|
|
240
|
+
if (property === 'z-index') {
|
|
241
|
+
return 'z-indexは1、-1、CSS変数(var(--)、またはcalc()のみ使用できます。他の値が必要な場合は設計を見直してください'
|
|
242
|
+
}
|
|
243
|
+
return '許可されていない値です'
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* line-heightの単位を禁止
|
|
250
|
+
* 理由: 単位なしの相対値を推奨(継承の問題を防ぐ)
|
|
251
|
+
* NG: line-height: 24px
|
|
252
|
+
* OK: line-height: 1.5
|
|
253
|
+
*/
|
|
254
|
+
'declaration-property-unit-allowed-list': [
|
|
255
|
+
{
|
|
256
|
+
'line-height': []
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
message: 'line-heightには単位を付けないでください。単位なしの相対値(1.5など)を使用してください'
|
|
260
|
+
}
|
|
261
|
+
],
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* 未知のプロパティ値を許可
|
|
265
|
+
* 理由: プロジェクトのカスタム関数(px()など)を使用
|
|
266
|
+
*/
|
|
267
|
+
'declaration-property-value-no-unknown': null,
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* ショートハンドプロパティの冗長性チェックを無効化
|
|
271
|
+
* 理由: 個別プロパティの使用を推奨
|
|
272
|
+
* 推奨: background-color vs background
|
|
273
|
+
*/
|
|
274
|
+
'declaration-block-no-redundant-longhand-properties': null,
|
|
275
|
+
|
|
276
|
+
// ========================================
|
|
277
|
+
// フォント・テキスト
|
|
278
|
+
// ========================================
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* フォントファミリー名の引用符を適切に管理
|
|
282
|
+
* 理由: スペース含むフォント名の安全性
|
|
283
|
+
* OK: font-family: "Noto Sans JP", sans-serif
|
|
284
|
+
*/
|
|
285
|
+
'font-family-name-quotes': 'always-where-recommended',
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* font-weightを数値形式で統一
|
|
289
|
+
* 理由: 細かい制御が可能
|
|
290
|
+
* NG: font-weight: bold
|
|
291
|
+
* OK: font-weight: 700
|
|
292
|
+
* 例外: font-weight: bolder(relative)
|
|
293
|
+
*/
|
|
294
|
+
'font-weight-notation': [
|
|
295
|
+
'numeric',
|
|
296
|
+
{
|
|
297
|
+
ignore: ['relative']
|
|
298
|
+
}
|
|
299
|
+
],
|
|
300
|
+
|
|
301
|
+
// ========================================
|
|
302
|
+
// 関数・URL
|
|
303
|
+
// ========================================
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* 未知の関数を許可
|
|
307
|
+
* 理由: プロジェクトのカスタム関数(px(), svg-uri()など)を使用
|
|
308
|
+
*/
|
|
309
|
+
'function-no-unknown': null,
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* URLに引用符を強制
|
|
313
|
+
* 理由: セキュリティ向上、パス内のスペース対応
|
|
314
|
+
* NG: url(../img/logo.svg)
|
|
315
|
+
* OK: url('../img/logo.svg')
|
|
316
|
+
*/
|
|
317
|
+
'function-url-quotes': 'always',
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* プロトコル相対URLを禁止
|
|
321
|
+
* 理由: セキュリティリスク
|
|
322
|
+
* NG: url(//example.com/image.jpg)
|
|
323
|
+
*/
|
|
324
|
+
'function-url-no-scheme-relative': true,
|
|
325
|
+
|
|
326
|
+
// ========================================
|
|
327
|
+
// 単位・数値
|
|
328
|
+
// ========================================
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* 0値に単位を付けない
|
|
332
|
+
* 理由: 不要な単位を削除
|
|
333
|
+
* NG: margin: 0px
|
|
334
|
+
* OK: margin: 0
|
|
335
|
+
* 例外: カスタムプロパティ(--_: 0px)
|
|
336
|
+
*/
|
|
337
|
+
'length-zero-no-unit': [
|
|
338
|
+
true,
|
|
339
|
+
{
|
|
340
|
+
ignore: ['custom-properties']
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* 小数点以下の桁数を5桁までに制限
|
|
346
|
+
* 理由: 過度な精度を防止
|
|
347
|
+
*/
|
|
348
|
+
'number-max-precision': 5,
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* 古いビューポート単位の使用を警告
|
|
352
|
+
* 理由: svw, dvw, lvwなどのモダンな単位を推奨
|
|
353
|
+
* 警告: vw, vh, vi, vb, vmin, vmax
|
|
354
|
+
* 推奨: svw, dvw, lvw, svh, dvh, lvh
|
|
355
|
+
*/
|
|
356
|
+
'unit-disallowed-list': [
|
|
357
|
+
['vw', 'vh', 'vi', 'vb', 'vmin', 'vmax'],
|
|
358
|
+
{
|
|
359
|
+
severity: 'warning'
|
|
360
|
+
}
|
|
361
|
+
],
|
|
362
|
+
|
|
363
|
+
// ========================================
|
|
364
|
+
// その他の値
|
|
365
|
+
// ========================================
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* メディアクエリの値を検証
|
|
369
|
+
*/
|
|
370
|
+
'media-feature-name-value-no-unknown': true,
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* キーワード値を小文字に統一
|
|
374
|
+
* 例外: SVGキーワードはキャメルケースを許可
|
|
375
|
+
*/
|
|
376
|
+
'value-keyword-case': [
|
|
377
|
+
'lower',
|
|
378
|
+
{
|
|
379
|
+
camelCaseSvgKeywords: true
|
|
380
|
+
}
|
|
381
|
+
],
|
|
382
|
+
|
|
383
|
+
// ========================================
|
|
384
|
+
// プロパティ
|
|
385
|
+
// ========================================
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* 未知のプロパティを禁止(例外あり)
|
|
389
|
+
* 例外: 実験的なCSS機能
|
|
390
|
+
*/
|
|
391
|
+
'property-no-unknown': [
|
|
392
|
+
true,
|
|
393
|
+
{
|
|
394
|
+
ignoreProperties: [
|
|
395
|
+
'text-decoration-inset',
|
|
396
|
+
'field-sizing',
|
|
397
|
+
'reading-flow',
|
|
398
|
+
'reading-order',
|
|
399
|
+
'navigation',
|
|
400
|
+
'interpolate-size',
|
|
401
|
+
'text-box',
|
|
402
|
+
'interactivity',
|
|
403
|
+
'corner-shape'
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
],
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* ベンダープレフィックスを制限(例外あり)
|
|
410
|
+
* 例外: Autoprefixerでカバーされないプロパティ
|
|
411
|
+
*/
|
|
412
|
+
'property-no-vendor-prefix': [
|
|
413
|
+
true,
|
|
414
|
+
{
|
|
415
|
+
ignoreProperties: ['backdrop-filter', 'mask', 'mask-image', 'text-size-adjust', 'appearance']
|
|
416
|
+
}
|
|
417
|
+
],
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* 非推奨プロパティを条件付きで許可
|
|
421
|
+
* 理由:
|
|
422
|
+
* - Chromiumブラウザのバグ対応で -webkit-user-modify が必要
|
|
423
|
+
* - visually-hidden パターンで clip が標準的に使用される(Bootstrap/Tailwind準拠)
|
|
424
|
+
*/
|
|
425
|
+
'property-no-deprecated': [
|
|
426
|
+
true,
|
|
427
|
+
{
|
|
428
|
+
ignoreProperties: ['-moz-user-modify', '-webkit-user-modify', 'clip']
|
|
429
|
+
}
|
|
430
|
+
],
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* 無効なposition宣言チェックを無効化
|
|
434
|
+
* 理由: stylelint v17の新ルールがCSS変数(--_name)を誤検知
|
|
435
|
+
* TODO: stylelint側で修正されたら再有効化を検討
|
|
436
|
+
*/
|
|
437
|
+
'no-invalid-position-declaration': null,
|
|
438
|
+
|
|
439
|
+
// ========================================
|
|
440
|
+
// SCSS固有のルール
|
|
441
|
+
// ========================================
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* 未知のat-ruleを許可
|
|
445
|
+
* 理由: @container, @starting-styleなど最新CSS機能を使用
|
|
446
|
+
*/
|
|
447
|
+
'scss/at-rule-no-unknown': null,
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Sass変数宣言前の空行を強制
|
|
451
|
+
* 例外: 最初のネスト、変数の連続、コメント後
|
|
452
|
+
*/
|
|
453
|
+
'scss/dollar-variable-empty-line-before': [
|
|
454
|
+
'always',
|
|
455
|
+
{
|
|
456
|
+
except: ['first-nested', 'after-dollar-variable'],
|
|
457
|
+
ignore: ['after-comment']
|
|
458
|
+
}
|
|
459
|
+
],
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Sass変数の命名規則
|
|
463
|
+
* パターン: kebab-case
|
|
464
|
+
* 例: $color-primary, $grid-breakpoints
|
|
465
|
+
*/
|
|
466
|
+
'scss/dollar-variable-pattern': '^[a-z][a-z0-9]*(-[a-z0-9]+)*$',
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Sassプレースホルダーの命名規則
|
|
470
|
+
* パターン: kebab-case
|
|
471
|
+
* 例: %clearfix, %button-base
|
|
472
|
+
*/
|
|
473
|
+
'scss/percent-placeholder-pattern': '^[a-z][a-z0-9]*(-[a-z0-9]+)*$',
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* グローバル関数名を禁止し、名前空間付き関数を強制
|
|
477
|
+
* 理由: Dart Sassのベストプラクティス
|
|
478
|
+
* NG: map-get($map, key)
|
|
479
|
+
* OK: map.get($map, key)
|
|
480
|
+
*/
|
|
481
|
+
'scss/no-global-function-names': [
|
|
482
|
+
true,
|
|
483
|
+
{
|
|
484
|
+
message: 'グローバル関数は非推奨です。名前空間付き関数を使用してください。例: map-get() → map.get()'
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* @use/@forwardでのパーシャル拡張子を禁止
|
|
490
|
+
* 理由: Sass公式推奨(ファイル形式の変更に対応)
|
|
491
|
+
* NG: @use "./variables.scss"
|
|
492
|
+
* OK: @use "./variables"
|
|
493
|
+
*/
|
|
494
|
+
'scss/load-partial-extension': 'never',
|
|
495
|
+
|
|
496
|
+
// ========================================
|
|
497
|
+
// フォーマット・空白行
|
|
498
|
+
// ========================================
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* コメント前の空行を強制
|
|
502
|
+
* 理由: セクション区切りの可読性向上
|
|
503
|
+
* 例外: 最初のネスト、連続するコメント
|
|
504
|
+
*/
|
|
505
|
+
'comment-empty-line-before': [
|
|
506
|
+
'always',
|
|
507
|
+
{
|
|
508
|
+
except: ['first-nested'],
|
|
509
|
+
ignore: ['stylelint-commands', 'after-comment']
|
|
510
|
+
}
|
|
511
|
+
],
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* プロパティ宣言前の空行を許可
|
|
515
|
+
* 理由: プロパティ間に空行を入れない書き方を採用
|
|
516
|
+
*/
|
|
517
|
+
'declaration-empty-line-before': null,
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* ルール前の空行を条件付きで強制
|
|
521
|
+
* 理由: 可読性向上
|
|
522
|
+
* 例外: 最初のネスト、コメント後
|
|
523
|
+
*/
|
|
524
|
+
'rule-empty-line-before': [
|
|
525
|
+
'always-multi-line',
|
|
526
|
+
{
|
|
527
|
+
except: ['first-nested'],
|
|
528
|
+
ignore: ['after-comment']
|
|
529
|
+
}
|
|
530
|
+
]
|
|
531
|
+
}
|
|
532
|
+
}
|