@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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +229 -152
- package/dist/index.js.map +1 -1
- package/docs/01-ssr.md +37 -3
- package/package.json +4 -3
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return [];
|
|
119
|
+
const mtime = fs.statSync(sourceFile).mtimeMs;
|
|
120
|
+
if (entry !== undefined && sourceMtimes.get(base) === mtime) {
|
|
121
|
+
return entry;
|
|
122
122
|
}
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
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
|
|
136
|
+
return fresh;
|
|
128
137
|
};
|
|
129
138
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
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
|
|
134
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
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
|
-
|
|
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
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
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
|
-
|
|
373
|
-
|
|
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
|
|
376
|
-
|
|
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
|
-
|
|
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
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
-
|
|
477
|
+
let renameMap = null;
|
|
478
|
+
if (minifyClassNames && consumer === "server") {
|
|
402
479
|
// サーバービルドは自分の頻度で短縮しない。CSS を持つのは
|
|
403
480
|
// クライアントビルドであり、独立に計算した短縮名は一致しないため。
|
|
404
481
|
// ssr 設定時のみ、共有された表に従って書き換える(transform 時に
|
|
405
482
|
// 適用済みだが、バンドル型 SSR での取りこぼしをここで拾う)
|
|
406
|
-
if (ssr
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
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
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
|
|
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
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
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
|
-
|
|
441
|
-
|
|
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
|
-
|
|
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":"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"}
|
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
|
-
|
|
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.
|
|
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.
|
|
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",
|