@bestcss/vite-plugin 0.1.0 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAiDnC,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACnC;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CA0f5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA0CnC,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACnC;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CAklB5D"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { applyRename, collectImportSources, createRenameMap, dedupeCss, generateClassName, transform, } from "@bestcss/core";
3
+ import { applyRename, collectImportSources, createRenameMap, dedupeCss, generateClassName, minifyCss, transform, } from "@bestcss/core";
4
4
  const TRANSFORM_TARGET_RE = /\.[jt]sx?$/;
5
5
  /**
6
6
  * 抽出した CSS を「元ファイル名 + この接尾辞」の仮想モジュールとして登録する。
@@ -8,12 +8,6 @@ const TRANSFORM_TARGET_RE = /\.[jt]sx?$/;
8
8
  * (postcss / minify / コード分割)にそのまま処理を委ねられる
9
9
  */
10
10
  const VIRTUAL_CSS_SUFFIX = ".bestcss.css";
11
- /**
12
- * ルート単位のスタイル収集エントリ(仮想モジュール)の接頭辞。
13
- * ルートファイルの import グラフ上の css`` を side-effect import として
14
- * 集めた「スタイルだけのエントリ」を表す
15
- */
16
- const VIRTUAL_ROUTE_PREFIX = "\0bestcss-route:";
17
11
  /** ルート → CSS ファイル一覧の対応表(ビルド時にインラインされる) */
18
12
  const VIRTUAL_ROUTE_MANIFEST = "virtual:bestcss/route-css";
19
13
  const RESOLVED_ROUTE_MANIFEST = "\0virtual:bestcss/route-css";
@@ -52,6 +46,8 @@ export function bestCss(options = {}) {
52
46
  /** 遅延ロードした仮想 CSS の鮮度管理(ソースの mtime) */
53
47
  const sourceMtimes = new Map();
54
48
  const generatedClassNames = new Set();
49
+ /** ルートキー → そのルートの import グラフ上の styled ファイル一覧 */
50
+ const routeStyledFiles = new Map();
55
51
  let root = process.cwd();
56
52
  let isProduction = false;
57
53
  let sharedRenameMap = null;
@@ -110,54 +106,102 @@ export function bestCss(options = {}) {
110
106
  await walk(entryFile);
111
107
  return styledFiles;
112
108
  };
113
- /** チャンクとその static import 先が参照する CSS アセット名を集める */
114
- const collectChunkCss = (fileName, bundle, seen) => {
115
- if (seen.has(fileName)) {
116
- return [];
109
+ /**
110
+ * 仮想 CSS の内容を(未変換ならオンデマンドに変換して)取得する。
111
+ * mtime で鮮度を確認するため、dev の編集にも追従する
112
+ */
113
+ const ensureCssEntry = (base) => {
114
+ const sourceFile = base.slice(0, -VIRTUAL_CSS_SUFFIX.length);
115
+ const entry = extractedCss.get(base);
116
+ if (!fs.existsSync(sourceFile)) {
117
+ return entry ?? null;
117
118
  }
118
- seen.add(fileName);
119
- const output = bundle[fileName];
120
- if (output === undefined || output.type !== "chunk") {
121
- return [];
119
+ const mtime = fs.statSync(sourceFile).mtimeMs;
120
+ if (entry !== undefined && sourceMtimes.get(base) === mtime) {
121
+ return entry;
122
122
  }
123
- const css = [...(output.viteMetadata?.importedCss ?? [])];
124
- for (const imported of output.imports ?? []) {
125
- css.push(...collectChunkCss(imported, bundle, seen));
123
+ const result = transform(fs.readFileSync(sourceFile, "utf8"), {
124
+ filename: sourceFile,
125
+ });
126
+ sourceMtimes.set(base, mtime);
127
+ if (result === null) {
128
+ // @bestcss/core を import していても css`` がないファイル
129
+ return null;
130
+ }
131
+ const fresh = { css: result.css, map: result.cssMap };
132
+ extractedCss.set(base, fresh);
133
+ for (const className of result.classNames) {
134
+ generatedClassNames.add(className);
126
135
  }
127
- return css;
136
+ return fresh;
128
137
  };
129
138
  /**
130
- * ルート CSS ファイル一覧の対応表を書き出し、スタイル収集用の
131
- * 仮想エントリ(空の JS チャンク)を成果物から取り除く
139
+ * ルート単位の CSS アセットを「共有シグネチャ」でグループ化して自前 emit し、
140
+ * ルート CSS ファイル一覧の対応表を書き出す。
141
+ *
142
+ * チャンクグラフ(viteMetadata / imports の走査)から導出しない理由:
143
+ * 空 JS のスタイルエントリは Vite の pure-CSS チャンク処理で統合・除去され、
144
+ * 「どのルートがこの CSS を必要とするか」の情報がバージョン依存の挙動で
145
+ * 消えるため(issue #2: Vite 6 で共有 CSS が 1 ルートに誤帰属)。
146
+ * ルート → styled モジュールの対応はプラグイン自身が知っているので、
147
+ * それだけを情報源にする
132
148
  */
133
- const writeRouteCssManifest = (bundle) => {
134
- const routesDir = routesDirPath();
135
- if (routesDir === null) {
149
+ const emitRouteCssAssets = (ctx, bundle, renameMap) => {
150
+ if (routesDirPath() === null || routeStyledFiles.size === 0) {
136
151
  return;
137
152
  }
153
+ // 同じルート集合から参照されるモジュールを 1 アセットにまとめる。
154
+ // 全ルート共有なら 1 ファイル(キャッシュ効率)、ルート専用なら
155
+ // そのルートだけのファイルになり、fan-out と共有バケットを兼ねる
156
+ const routesByFile = new Map();
157
+ for (const [routeKey, files] of routeStyledFiles) {
158
+ for (const file of files) {
159
+ const routes = routesByFile.get(file) ?? new Set();
160
+ routes.add(routeKey);
161
+ routesByFile.set(file, routes);
162
+ }
163
+ }
164
+ const groups = new Map();
165
+ for (const [file, routes] of routesByFile) {
166
+ const sortedRoutes = [...routes].sort();
167
+ const signature = sortedRoutes.join("\n");
168
+ const group = groups.get(signature) ?? {
169
+ routes: sortedRoutes,
170
+ files: [],
171
+ };
172
+ group.files.push(file);
173
+ groups.set(signature, group);
174
+ }
138
175
  const manifest = {};
139
- let found = false;
140
- for (const [fileName, output] of Object.entries(bundle)) {
141
- const chunk = output;
142
- if (chunk.type !== "chunk" ||
143
- !chunk.facadeModuleId?.startsWith(VIRTUAL_ROUTE_PREFIX)) {
176
+ for (const routeKey of routeStyledFiles.keys()) {
177
+ manifest[routeKey] = [];
178
+ }
179
+ for (const group of groups.values()) {
180
+ const cssText = dedupeCss(group.files
181
+ .sort()
182
+ .map((file) => ensureCssEntry(file + VIRTUAL_CSS_SUFFIX)?.css ?? "")
183
+ .filter((css) => css !== "")
184
+ .join("\n"));
185
+ if (cssText.trim() === "") {
144
186
  continue;
145
187
  }
146
- found = true;
147
- const routeFile = chunk.facadeModuleId.slice(VIRTUAL_ROUTE_PREFIX.length);
148
- const routeKey = path
149
- .relative(routesDir, routeFile)
150
- .replace(/\.[jt]sx?$/, "");
151
- manifest[routeKey] = [
152
- ...new Set(collectChunkCss(fileName, bundle, new Set())),
153
- ];
154
- delete bundle[fileName];
155
- }
156
- if (found) {
157
- const manifestPath = routeManifestPath();
158
- fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
159
- fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
188
+ // emitFile したアセットは同一 handler 内の bundle 走査に現れないため、
189
+ // クラス名短縮は emit 前にここで適用する(表は呼び出し側で確定済み)
190
+ let minified = minifyCss(cssText);
191
+ if (renameMap !== null) {
192
+ minified = applyRename(minified, renameMap);
193
+ }
194
+ const fileName = `assets/bestcss.${generateClassName(minified)}.css`;
195
+ if (!(fileName in bundle)) {
196
+ ctx.emitFile({ type: "asset", fileName, source: minified });
197
+ }
198
+ for (const routeKey of group.routes) {
199
+ manifest[routeKey]?.push(fileName);
200
+ }
160
201
  }
202
+ const manifestPath = routeManifestPath();
203
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
204
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
161
205
  };
162
206
  return {
163
207
  name: "bestcss",
@@ -180,15 +224,15 @@ export function bestCss(options = {}) {
180
224
  // 上書きされ得る。isProduction はその場合も true を保つ
181
225
  isProduction = config.isProduction;
182
226
  },
183
- buildStart() {
227
+ async buildStart() {
184
228
  const routesDir = routesDirPath();
185
229
  if (routesDir === null) {
186
230
  return;
187
231
  }
188
232
  const environment = this.environment;
189
- // スタイルエントリは「CSS を出力するクライアントの本番ビルド」にだけ
190
- // 注入する。input 未定義の環境を除外するのは、SSG 等がビルド中に
191
- // 走らせる空のクライアント環境(成果物と manifest を汚す)を避けるため
233
+ // ルート → styled ファイルの収集は「CSS を出力するクライアントの
234
+ // 本番ビルド」でだけ行う。input 未定義の環境を除外するのは、SSG 等が
235
+ // ビルド中に走らせる空のクライアント環境(manifest を汚す)を避けるため
192
236
  const input = environment?.config?.build?.rollupOptions?.input;
193
237
  const hasInput = Array.isArray(input)
194
238
  ? input.length > 0
@@ -202,15 +246,12 @@ export function bestCss(options = {}) {
202
246
  !hasInput) {
203
247
  return;
204
248
  }
249
+ routeStyledFiles.clear();
205
250
  for (const routeFile of walkDir(routesDir)) {
206
251
  const routeKey = path
207
252
  .relative(routesDir, routeFile)
208
253
  .replace(/\.[jt]sx?$/, "");
209
- this.emitFile({
210
- type: "chunk",
211
- id: VIRTUAL_ROUTE_PREFIX + routeFile,
212
- name: `bestcss-route/${routeKey}`,
213
- });
254
+ routeStyledFiles.set(routeKey, await collectStyledFiles(this, routeFile));
214
255
  }
215
256
  },
216
257
  resolveId(source, importer) {
@@ -228,9 +269,6 @@ export function bestCss(options = {}) {
228
269
  if (source === VIRTUAL_DEV_STYLES) {
229
270
  return asSideEffect(RESOLVED_DEV_STYLES);
230
271
  }
231
- if (source.startsWith(VIRTUAL_ROUTE_PREFIX)) {
232
- return source;
233
- }
234
272
  // 仮想 CSS モジュールはファイルシステムに存在しないため、
235
273
  // 他のリゾルバに渡さずここで解決を確定させる
236
274
  const base = stripQuery(source);
@@ -242,25 +280,60 @@ export function bestCss(options = {}) {
242
280
  }
243
281
  // まだ変換していないソースの仮想 CSS も、元ファイルが実在するなら
244
282
  // 解決する(load 側でオンデマンドに変換する)。相対指定は
245
- // importer 基準で絶対パスに直す
246
- const absolute = base.startsWith(".") && importer !== undefined
247
- ? path.resolve(path.dirname(stripQuery(importer)), base)
248
- : base;
249
- const sourceFile = absolute.slice(0, -VIRTUAL_CSS_SUFFIX.length);
250
- if (fs.existsSync(sourceFile)) {
251
- return asSideEffect(absolute);
283
+ // importer 基準、"/" 始まりは fs 絶対パスと root 相対 URL の両方を試す
284
+ // (後者は dev の <link href="/app/....bestcss.css?direct"> 由来)
285
+ const candidates = base.startsWith(".") && importer !== undefined
286
+ ? [path.resolve(path.dirname(stripQuery(importer)), base)]
287
+ : base.startsWith("/")
288
+ ? [base, path.join(root, base)]
289
+ : [base];
290
+ // ?direct 等のクエリは解決後の id にも残す。落とすと Vite の CSS
291
+ // プラグインが「生 CSS を返すリクエスト」と識別できず、<link> に
292
+ // JS ラッパーが配信されてしまう
293
+ const query = source.slice(base.length);
294
+ for (const candidate of candidates) {
295
+ const sourceFile = candidate.slice(0, -VIRTUAL_CSS_SUFFIX.length);
296
+ if (fs.existsSync(sourceFile)) {
297
+ return asSideEffect(candidate + query);
298
+ }
252
299
  }
253
300
  return null;
254
301
  },
255
302
  async load(id) {
256
303
  if (id === RESOLVED_ROUTE_MANIFEST) {
257
- // 本番はビルド時に対応表をインラインする(実行時 fs アクセス不要)。
258
- // dev は null(スタイルは dev-styles 経由で注入されるため)
259
- const manifestPath = routeManifestPath();
260
- if (isProduction && fs.existsSync(manifestPath)) {
261
- return `export default ${fs.readFileSync(manifestPath, "utf8")};`;
304
+ // 本番はビルド時に対応表をインラインする(実行時 fs アクセス不要)
305
+ if (isProduction) {
306
+ const manifestPath = routeManifestPath();
307
+ if (fs.existsSync(manifestPath)) {
308
+ return `export default ${fs.readFileSync(manifestPath, "utf8")};`;
309
+ }
310
+ return "export default null;";
262
311
  }
263
- return "export default null;";
312
+ // dev はルートを走査し、Vite が生 CSS として配信する dev 用 URL
313
+ // (?direct)を返す。これにより renderer は dev / prod 同一の
314
+ // routeCssHrefs 経路で <link> を張れる。island を持たない純 SSR で
315
+ // クライアント JS が読み込まれなくてもスタイルが当たる(issue #3)
316
+ const routesDir = routesDirPath();
317
+ if (routesDir === null || !fs.existsSync(routesDir)) {
318
+ return "export default null;";
319
+ }
320
+ const manifest = {};
321
+ for (const routeFile of walkDir(routesDir)) {
322
+ const routeKey = path
323
+ .relative(routesDir, routeFile)
324
+ .replace(/\.[jt]sx?$/, "");
325
+ const files = await collectStyledFiles(this, routeFile);
326
+ manifest[routeKey] = files.map((file) => {
327
+ const cssId = file + VIRTUAL_CSS_SUFFIX;
328
+ const relative = path.relative(root, cssId);
329
+ // root 外のファイルは Vite の /@fs/ 形式で配信される
330
+ const urlPath = relative.startsWith("..")
331
+ ? `@fs${cssId}`
332
+ : relative;
333
+ return `${urlPath}?direct`;
334
+ });
335
+ }
336
+ return `export default ${JSON.stringify(manifest)};`;
264
337
  }
265
338
  if (id === RESOLVED_DEV_STYLES) {
266
339
  // dev 専用: 全ルートの import グラフからスタイルを収集して読み込む。
@@ -279,45 +352,19 @@ export function bestCss(options = {}) {
279
352
  .map((f) => `import ${JSON.stringify(f + VIRTUAL_CSS_SUFFIX)};`)
280
353
  .join("\n") + "\nexport {};\n");
281
354
  }
282
- if (id.startsWith(VIRTUAL_ROUTE_PREFIX)) {
283
- // ルートの import グラフを辿り、css`` を含むファイルの仮想 CSS を
284
- // side-effect import するだけのモジュールを生成する。
285
- // ルート専用/共有の分割判断は Vite のチャンク分割に委ねる
286
- const routeFile = id.slice(VIRTUAL_ROUTE_PREFIX.length);
287
- const styledFiles = await collectStyledFiles(this, routeFile);
288
- return (styledFiles
289
- .map((f) => `import ${JSON.stringify(f + VIRTUAL_CSS_SUFFIX)};`)
290
- .join("\n") + "\nexport {};\n");
291
- }
292
355
  const base = stripQuery(id);
293
356
  if (!base.endsWith(VIRTUAL_CSS_SUFFIX)) {
294
357
  return null;
295
358
  }
296
- const sourceFile = base.slice(0, -VIRTUAL_CSS_SUFFIX.length);
297
- let entry = extractedCss.get(base);
298
- // ソースを JS として import しない利用(routeStyles / dev-styles)でも
299
- // 内容が新しくなるよう、mtime で鮮度を確認してオンデマンドに変換する
300
- if (fs.existsSync(sourceFile)) {
301
- const mtime = fs.statSync(sourceFile).mtimeMs;
302
- if (entry === undefined || sourceMtimes.get(base) !== mtime) {
303
- const result = transform(fs.readFileSync(sourceFile, "utf8"), {
304
- filename: sourceFile,
305
- });
306
- sourceMtimes.set(base, mtime);
307
- if (result === null) {
308
- // @bestcss/core を import していても css`` がないファイルは
309
- // 空の CSS として扱う(ENOENT でビルドを壊さない)
310
- return "";
311
- }
312
- entry = { css: result.css, map: result.cssMap };
313
- extractedCss.set(base, entry);
314
- for (const className of result.classNames) {
315
- generatedClassNames.add(className);
316
- }
317
- }
318
- }
319
- if (entry === undefined) {
320
- return null;
359
+ // ソースを JS として import しない利用(dev-styles 等)でも内容が
360
+ // 新しくなるよう、mtime で鮮度を確認してオンデマンドに変換する
361
+ const entry = ensureCssEntry(base);
362
+ if (entry === null) {
363
+ // @bestcss/core を import していても css`` がないファイルは
364
+ // 空の CSS として扱う(ENOENT でビルドを壊さない)
365
+ return fs.existsSync(base.slice(0, -VIRTUAL_CSS_SUFFIX.length))
366
+ ? ""
367
+ : null;
321
368
  }
322
369
  // map を添えることで、css.devSourcemap 有効時に DevTools の Styles
323
370
  // ペインから元の tsx(css`` の位置)へ辿れるようになる。
@@ -369,15 +416,40 @@ export function bestCss(options = {}) {
369
416
  };
370
417
  },
371
418
  hotUpdate(ctx) {
372
- // dev-styles 経由でのみ読み込まれている仮想 CSS は、元ファイルの
373
- // 変更を watcher が関連付けられないため、ここで明示的に更新対象に加える
419
+ const environment = this.environment;
420
+ const graph = environment?.moduleGraph;
421
+ if (graph === undefined) {
422
+ return;
423
+ }
424
+ // ルート構成やスタイル集合の変化に追従するため manifest は毎回無効化する
425
+ // (dev manifest は次のリクエストで再走査される。安価)
426
+ const manifestMod = graph.getModuleById?.(RESOLVED_ROUTE_MANIFEST);
427
+ if (manifestMod !== undefined && manifestMod !== null) {
428
+ graph.invalidateModule?.(manifestMod);
429
+ }
430
+ // 仮想 CSS は watcher が元ファイルと関連付けられないため、
431
+ // ?direct / ?hash などの変種も含めて明示的に無効化する
374
432
  const cssId = ctx.file + VIRTUAL_CSS_SUFFIX;
375
- const graph = this.environment?.moduleGraph;
376
- const mod = graph?.getModuleById?.(cssId);
377
- if (mod === undefined || mod === null) {
433
+ const mods = graph.getModulesByFile?.(cssId);
434
+ if (mods === undefined || mods.size === 0) {
378
435
  return;
379
436
  }
380
- return [...ctx.modules, mod];
437
+ const extra = [];
438
+ let linkOnly = false;
439
+ for (const mod of mods) {
440
+ graph.invalidateModule?.(mod);
441
+ extra.push(mod);
442
+ const importers = mod.importers;
443
+ if ((importers?.size ?? 0) === 0) {
444
+ linkOnly = true;
445
+ }
446
+ }
447
+ // <link ?direct> 専用供給(JS の importer がいない)は HMR 境界を
448
+ // 持たないため、full-reload で編集を反映する(issue #3)
449
+ if (linkOnly && environment?.name === "client") {
450
+ environment.hot?.send?.({ type: "full-reload" });
451
+ }
452
+ return [...ctx.modules, ...extra];
381
453
  },
382
454
  generateBundle: {
383
455
  // プラグイン全体は enforce: "pre" のため、order: "post" を付けないと
@@ -393,63 +465,68 @@ export function bestCss(options = {}) {
393
465
  output.source = dedupeCss(String(output.source));
394
466
  }
395
467
  }
396
- writeRouteCssManifest(bundle);
397
- if (!minifyClassNames) {
398
- return;
468
+ // ルート単位 CSS の全クラス名を、リネーム表の計算より前に登録する。
469
+ // ルート専用モジュールはクライアントの JS グラフに入らないため、
470
+ // ここで変換しておかないと表から漏れて短縮の対象外になってしまう
471
+ for (const files of routeStyledFiles.values()) {
472
+ for (const file of files) {
473
+ ensureCssEntry(file + VIRTUAL_CSS_SUFFIX);
474
+ }
399
475
  }
400
476
  const consumer = this.environment?.config?.consumer;
401
- if (consumer === "server") {
477
+ let renameMap = null;
478
+ if (minifyClassNames && consumer === "server") {
402
479
  // サーバービルドは自分の頻度で短縮しない。CSS を持つのは
403
480
  // クライアントビルドであり、独立に計算した短縮名は一致しないため。
404
481
  // ssr 設定時のみ、共有された表に従って書き換える(transform 時に
405
482
  // 適用済みだが、バンドル型 SSR での取りこぼしをここで拾う)
406
- if (ssr === null) {
407
- return;
408
- }
409
- const sharedMap = loadSharedRenameMap();
410
- for (const output of Object.values(bundle)) {
411
- if (output.type === "chunk") {
412
- output.code = applyRename(output.code, sharedMap);
483
+ if (ssr !== null) {
484
+ const sharedMap = loadSharedRenameMap();
485
+ for (const output of Object.values(bundle)) {
486
+ if (output.type === "chunk") {
487
+ output.code = applyRename(output.code, sharedMap);
488
+ }
413
489
  }
414
490
  }
415
- return;
416
- }
417
- if (generatedClassNames.size === 0) {
418
- return;
419
491
  }
420
- // 使用頻度は JS チャンク内の静的な出現回数を代理指標にする。
421
- // 実行時の描画回数は分からないが、全クラスが 1〜3 文字になるため
422
- // 順位の精度がサイズに与える影響は小さい
423
- const frequencies = new Map([...generatedClassNames].map((name) => [name, 0]));
424
- for (const output of Object.values(bundle)) {
425
- if (output.type !== "chunk") {
426
- continue;
427
- }
428
- for (const matched of output.code.matchAll(/\bbc[a-z0-9]+\b/g)) {
429
- const count = frequencies.get(matched[0]);
430
- if (count !== undefined) {
431
- frequencies.set(matched[0], count + 1);
492
+ else if (minifyClassNames && generatedClassNames.size > 0) {
493
+ // 使用頻度は JS チャンク内の静的な出現回数を代理指標にする。
494
+ // 実行時の描画回数は分からないが、全クラスが 1〜3 文字になるため
495
+ // 順位の精度がサイズに与える影響は小さい
496
+ const frequencies = new Map([...generatedClassNames].map((name) => [name, 0]));
497
+ for (const output of Object.values(bundle)) {
498
+ if (output.type !== "chunk") {
499
+ continue;
500
+ }
501
+ for (const matched of output.code.matchAll(/\bbc[a-z0-9]+\b/g)) {
502
+ const count = frequencies.get(matched[0]);
503
+ if (count !== undefined) {
504
+ frequencies.set(matched[0], count + 1);
505
+ }
432
506
  }
433
507
  }
434
- }
435
- const renameMap = createRenameMap(frequencies);
436
- for (const [fileName, output] of Object.entries(bundle)) {
437
- if (output.type === "chunk") {
438
- output.code = applyRename(output.code, renameMap);
508
+ renameMap = createRenameMap(frequencies);
509
+ for (const [fileName, output] of Object.entries(bundle)) {
510
+ if (output.type === "chunk") {
511
+ output.code = applyRename(output.code, renameMap);
512
+ }
513
+ else if (fileName.endsWith(".css")) {
514
+ output.source = applyRename(String(output.source), renameMap);
515
+ }
439
516
  }
440
- else if (fileName.endsWith(".css")) {
441
- output.source = applyRename(String(output.source), renameMap);
517
+ // 確定した表を書き出し、後続のサーバービルドに共有する。
518
+ // 「CSS を持つ環境」に限定する理由: SSG 等が走らせる空の
519
+ // クライアント環境が、確定済みの表を上書きするのを防ぐため
520
+ const mapPath = renameMapPath();
521
+ const hasCss = routeStyledFiles.size > 0 ||
522
+ Object.keys(bundle).some((fileName) => fileName.endsWith(".css"));
523
+ if (mapPath !== null && hasCss) {
524
+ fs.mkdirSync(path.dirname(mapPath), { recursive: true });
525
+ fs.writeFileSync(mapPath, JSON.stringify(Object.fromEntries(renameMap), null, 2));
442
526
  }
443
527
  }
444
- // 確定した表を書き出し、後続のサーバービルドに共有する。
445
- // CSS アセットを持つ環境に限定する理由: SSG 等が走らせる空の
446
- // クライアント環境が、確定済みの表を上書きするのを防ぐため
447
- const mapPath = renameMapPath();
448
- const hasCssAsset = Object.keys(bundle).some((fileName) => fileName.endsWith(".css"));
449
- if (mapPath !== null && hasCssAsset) {
450
- fs.mkdirSync(path.dirname(mapPath), { recursive: true });
451
- fs.writeFileSync(mapPath, JSON.stringify(Object.fromEntries(renameMap), null, 2));
452
- }
528
+ // ルート単位 CSS の emit はリネーム表の確定後に行う(表を適用して出力)
529
+ emitRouteCssAssets(this, bundle, renameMap);
453
530
  },
454
531
  },
455
532
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,SAAS,GACV,MAAM,eAAe,CAAC;AAGvB,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C,0CAA0C;AAC1C,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAC3D,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AACxD,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAE3D;;;GAGG;AACH,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAE1C,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAElE,kDAAkD;AAClD,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAgCD,MAAM,UAAU,OAAO,CAAC,UAA0B,EAAE;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAC1D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK;QAChD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACpB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwC,CAAC;IACrE,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACrD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,eAAe,GAA+B,IAAI,CAAC;IAEvD,MAAM,aAAa,GAAG,GAAkB,EAAE,CACxC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,GAAW,EAAE,CACrC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,GAAkB,EAAE,CACxC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAE1E,MAAM,mBAAmB,GAAG,GAAwB,EAAE;QACpD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,YAAY;gBACnC,qBAAqB;gBACrB,uBAAuB,CAC1B,CAAC;QACJ,CAAC;QACD,eAAe,GAAG,IAAI,GAAG,CACvB,MAAM,CAAC,OAAO,CACZ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAA2B,CACvE,CACF,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC;IAEF,+CAA+C;IAC/C,MAAM,kBAAkB,GAAG,KAAK,EAC9B,GAKC,EACD,SAAiB,EACE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;YACjD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,gDAAgD;YAChD,sCAAsC;YACtC,IAAI,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC5C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBACD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC3C,IACE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACrC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC9B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAC1B,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,cAAc,GAAG,CAAC,IAAY,EAAuC,EAAE;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,IAAI,IAAI,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;YAC5D,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,6CAA6C;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACtD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF;;;;;;;;;;OAUG;IACH,MAAM,kBAAkB,GAAG,CACzB,GAMC,EACD,MAA+B,EAC/B,SAAqC,EAC/B,EAAE;QACR,IAAI,aAAa,EAAE,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,oCAAoC;QACpC,mCAAmC;QACnC,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;QACpD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiD,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI;gBACrC,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,EAAE;aACV,CAAC;YACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,SAAS,CACvB,KAAK,CAAC,KAAK;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,GAAG,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;iBACnE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;iBAC3B,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;YACF,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,kDAAkD;YAClD,uCAAuC;YACvC,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,QAAQ,GAAG,kBAAkB,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrE,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;QACzC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,iEAAiE;QACjE,uCAAuC;QACvC,OAAO,EAAE,KAAK;QAEd,MAAM;YACJ,0DAA0D;YAC1D,oDAAoD;YACpD,+CAA+C;YAC/C,OAAO;gBACL,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,sBAAsB,CAAC,EAAE;aAC9C,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACnB,sDAAsD;YACtD,wCAAwC;YACxC,iDAAiD;YACjD,uCAAuC;YACvC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,UAAU;YACd,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GACf,IASD,CAAC,WAAW,CAAC;YACd,yCAAyC;YACzC,yCAAyC;YACzC,0CAA0C;YAC1C,MAAM,KAAK,GAAG,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC;YAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACnC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAClB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;oBACzB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,KAAK,KAAK,SAAS;wBACnB,KAAK,KAAK,IAAI;wBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,IACE,WAAW,EAAE,IAAI,KAAK,OAAO;gBAC7B,WAAW,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ;gBACzC,CAAC,QAAQ,EACT,CAAC;gBACD,OAAO;YACT,CAAC;YACD,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI;qBAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;qBAC9B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC7B,gBAAgB,CAAC,GAAG,CAClB,QAAQ,EACR,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAC1C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,SAAS,CAAC,MAAM,EAAE,QAAQ;YACxB,qDAAqD;YACrD,oDAAoD;YACpD,mCAAmC;YACnC,+BAA+B;YAC/B,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC;gBACpC,EAAE;gBACF,iBAAiB,EAAE,IAAa;aACjC,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;gBACtC,OAAO,uBAAuB,CAAC;YACjC,CAAC;YACD,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;gBAClC,OAAO,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAC3C,CAAC;YACD,iCAAiC;YACjC,wBAAwB;YACxB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,qCAAqC;YACrC,iCAAiC;YACjC,mDAAmD;YACnD,2DAA2D;YAC3D,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,SAAS;gBAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACf,6CAA6C;YAC7C,wCAAwC;YACxC,mBAAmB;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,OAAO,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;gBACnC,qCAAqC;gBACrC,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;oBACzC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAChC,OAAO,kBAAkB,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC;oBACpE,CAAC;oBACD,OAAO,sBAAsB,CAAC;gBAChC,CAAC;gBACD,6CAA6C;gBAC7C,+CAA+C;gBAC/C,oDAAoD;gBACpD,yCAAyC;gBACzC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;gBAClC,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpD,OAAO,sBAAsB,CAAC;gBAChC,CAAC;gBACD,MAAM,QAAQ,GAA6B,EAAE,CAAC;gBAC9C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,IAAI;yBAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;yBAC9B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;oBAC7B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACxD,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACtC,MAAM,KAAK,GAAG,IAAI,GAAG,kBAAkB,CAAC;wBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC5C,qCAAqC;wBACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;4BACvC,CAAC,CAAC,MAAM,KAAK,EAAE;4BACf,CAAC,CAAC,QAAQ,CAAC;wBACb,OAAO,GAAG,OAAO,SAAS,CAAC;oBAC7B,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YACvD,CAAC;YAED,IAAI,EAAE,KAAK,mBAAmB,EAAE,CAAC;gBAC/B,2CAA2C;gBAC3C,mCAAmC;gBACnC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;gBAClC,IAAI,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpE,OAAO,YAAY,CAAC;gBACtB,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;gBACjC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;wBAC7D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;gBACD,OAAO,CACL,CAAC,GAAG,MAAM,CAAC;qBACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC;qBAC/D,IAAI,CAAC,IAAI,CAAC,GAAG,gBAAgB,CACjC,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,8CAA8C;YAC9C,oCAAoC;YACpC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,8CAA8C;gBAC9C,iCAAiC;gBACjC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAC7D,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,IAAI,CAAC;YACX,CAAC;YACD,sDAAsD;YACtD,mCAAmC;YACnC,6CAA6C;YAC7C,sCAAsC;YACtC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QAED,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,0CAA0C;gBAC1C,gDAAgD;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,GAAG,kBAAkB,CAAC;YACtC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC1C,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAED,sCAAsC;YACtC,iCAAiC;YACjC,iCAAiC;YACjC,MAAM,QAAQ,GACZ,IACD,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;YAChC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC7B,yCAAyC;gBACzC,yCAAyC;gBACzC,+BAA+B;gBAC/B,qCAAqC;gBACrC,yCAAyC;gBACzC,IAAI,YAAY,IAAI,GAAG,KAAK,IAAI,IAAI,gBAAgB,EAAE,CAAC;oBACrD,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YAED,mDAAmD;YACnD,0CAA0C;YAC1C,6CAA6C;YAC7C,qCAAqC;YACrC,MAAM,cAAc,GAAG,GAAG,KAAK,SAAS,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACxE,qCAAqC;YACrC,6BAA6B;YAC7B,OAAO;gBACL,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK;gBACnE,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,GAAyC;YACjD,MAAM,WAAW,GACf,IAWD,CAAC,WAAW,CAAC;YACd,MAAM,KAAK,GAAG,WAAW,EAAE,WAAW,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,2CAA2C;YAC3C,oCAAoC;YACpC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,uBAAuB,CAAC,CAAC;YACnE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACtD,KAAK,CAAC,gBAAgB,EAAE,CAAC,WAAoB,CAAC,CAAC;YACjD,CAAC;YACD,sCAAsC;YACtC,qCAAqC;YACrC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,kBAAkB,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAc,EAAE,CAAC;YAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,gBAAgB,EAAE,CAAC,GAAY,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,SAAS,GAAI,GAAoC,CAAC,SAAS,CAAC;gBAClE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,mDAAmD;YACnD,wCAAwC;YACxC,IAAI,QAAQ,IAAI,WAAW,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/C,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAU,CAAC;QAC7C,CAAC;QAED,cAAc,EAAE;YACd,mDAAmD;YACnD,oDAAoD;YACpD,KAAK,EAAE,MAAM;YACb,OAAO,CAAC,QAAQ,EAAE,MAAM;gBACtB,uCAAuC;gBACvC,wCAAwC;gBACxC,qDAAqD;gBACrD,oCAAoC;gBACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBACzD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAED,sCAAsC;gBACtC,oCAAoC;gBACpC,kCAAkC;gBAClC,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,cAAc,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GACZ,IACD,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAEhC,IAAI,SAAS,GAA+B,IAAI,CAAC;gBAEjD,IAAI,gBAAgB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC9C,gCAAgC;oBAChC,mCAAmC;oBACnC,yCAAyC;oBACzC,kCAAkC;oBAClC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;wBACxC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gCAC5B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;4BACpD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,gBAAgB,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC5D,kCAAkC;oBAClC,oCAAoC;oBACpC,sBAAsB;oBACtB,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAClD,CAAC;oBACF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC5B,SAAS;wBACX,CAAC;wBACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;4BAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCACxB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;4BACzC,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;oBACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBACxD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC5B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;wBACpD,CAAC;6BAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BACrC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;wBAChE,CAAC;oBACH,CAAC;oBAED,8BAA8B;oBAC9B,mCAAmC;oBACnC,+BAA+B;oBAC/B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;oBAChC,MAAM,MAAM,GACV,gBAAgB,CAAC,IAAI,GAAG,CAAC;wBACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpE,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC/B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACzD,EAAE,CAAC,aAAa,CACd,OAAO,EACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACvD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,2CAA2C;gBAC3C,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
package/docs/01-ssr.md CHANGED
@@ -34,12 +34,14 @@ import { routeCssHrefs } from "@bestcss/vite-plugin/route-css";
34
34
 
35
35
  制限: 動的セグメント(`$id` 等)のパスマッチングは未対応。
36
36
 
37
- ## dev のスタイル読み込み
37
+ ## dev のスタイル供給(routesDir 指定時は何も要らない)
38
38
 
39
- クライアントエントリで仮想モジュールを 1 import する。dev では全ルートのスタイルを HMR 付きで収集し、本番ビルドでは空になる:
39
+ dev では `routeCssHrefs` がルート走査に基づく dev URL(`?direct`)を返すため、**renderer の `<link>` だけで dev / prod 両方のスタイルが揃う**。island やクライアントエントリの有無に依存しない(クライアント JS を一切読み込まない純 SSR 構成でも動く)。スタイル編集は自動で反映される(`<link>` 専用供給は full-reload、クライアント JS グラフに importer がいる場合は通常の HMR)。
40
+
41
+ routesDir を使わない構成では、クライアントエントリに仮想モジュールを 1 行 import する方法が使える(dev では全ルートのスタイルを収集し、本番ビルドでは空になる):
40
42
 
41
43
  ```ts
42
- // app/client.ts
44
+ // app/client.ts(routesDir を使わない場合のみ)
43
45
  import "virtual:bestcss/dev-styles";
44
46
  ```
45
47
 
@@ -49,6 +51,38 @@ import "virtual:bestcss/dev-styles";
49
51
  { "compilerOptions": { "types": ["vite/client", "@bestcss/vite-plugin/client"] } }
50
52
  ```
51
53
 
54
+ ## 最小構成: island を持たない純 SSR(HonoX)
55
+
56
+ hydration が無くても、必要なのは vite.config の `ssr: { routesDir }` と renderer の 2 点だけ:
57
+
58
+ ```tsx
59
+ // app/routes/_renderer.tsx
60
+ import { routeCssHrefs } from "@bestcss/vite-plugin/route-css";
61
+
62
+ {routeCssHrefs(c.req.path).map((href) => (
63
+ <link href={href} rel="stylesheet" />
64
+ ))}
65
+ ```
66
+
67
+ クライアントエントリも dev 専用エントリも不要。dev / prod とも同じ経路で配信される。
68
+
52
69
  ## リネーム表を使わない選択肢
53
70
 
54
71
  `minifyClassNames: false` にすると内容ハッシュ名(`bc...`)のまま出力される。内容ハッシュは独立したビルド間でも決定的に一致するため、表の共有なしで HTML と CSS が一致する([core: 内部のしくみ](../../core/docs/02-how-it-works.md) 参照)。
72
+
73
+ ## routesDir を使わない場合の CSS 配信(ssr: true のみ)
74
+
75
+ ルート単位分割が不要なら、CSS はクライアントビルドの通常のグラフから出力される。スタイルは islands などクライアントに入るモジュール経由で収集されるため、ルート専用モジュールのスタイルはクライアントエントリから side-effect import で集める。`<link>` は出力名を固定して張るのが簡単:
76
+
77
+ ```ts
78
+ // vite.config.ts(client)
79
+ build: {
80
+ cssCodeSplit: false,
81
+ rollupOptions: { output: { assetFileNames: "static/assets/[name].[ext]" } },
82
+ }
83
+ ```
84
+
85
+ ```tsx
86
+ // renderer(本番のみ)
87
+ <link href="/static/assets/style.css" rel="stylesheet" />
88
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bestcss/vite-plugin",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "bestcss の Vite プラグイン。css`` の抽出・HMR・クラス名短縮・SSR / ルート単位 CSS 分割",
5
5
  "keywords": [
6
6
  "css",
@@ -41,11 +41,12 @@
41
41
  "docs"
42
42
  ],
43
43
  "dependencies": {
44
- "@bestcss/core": "0.1.0"
44
+ "@bestcss/core": "0.1.2"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^26.1.0",
48
- "vite": "^8.1.3"
48
+ "vite": "^8.1.3",
49
+ "vite6": "npm:vite@^6.4.3"
49
50
  },
50
51
  "scripts": {
51
52
  "build": "tsc -p tsconfig.build.json",