@ubean/build 0.7.5 → 0.7.7
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/codegen/index.js +1 -1
- package/dist/{codegen-D9q6Yu0z.js → codegen-BfisMsKI.js} +9 -2
- package/dist/production.js +1 -1
- package/dist/{vite-DQ6nL0Kv.js → vite-XkW62Q_w.js} +32 -4
- package/dist/vite.js +2 -2
- package/dist/{vue-BSQATqn6.js → vue-DAoQpWPA.js} +44 -11
- package/dist/vue.d.ts +8 -1
- package/dist/vue.js +1 -1
- package/package.json +14 -14
package/dist/codegen/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { d as BUILTIN_PRESETS, t as CODEGEN_CONTRACT_VERSION, n as CODEGEN_FILES, r as CODEGEN_NON_CONTRACT_FILES, p as HONO_OPENAPI_PRESET, m as UBEAN_CLIENT_PRESET, h as UBEAN_SERVER_PRESET, g as VUE_I18N_PRESET, _ as VUE_MACROS_PRESET, v as VUE_PRESET, y as VUE_ROUTER_PRESET, b as generateAutoImports, l as generateI18nTypes, x as generateImportsTransform, a as generateOpenApiTypes, o as generateOpenApiTypesFromServer, s as generatePageTypes, c as generateRouteTypes, i as generateTypes, S as getAutoImportPresets, C as getBuiltinComposables, w as getUbeanAutoImportConfig, T as getUbeanComponentsConfig, u as messagesToTsType, E as resolveAutoImportsConfig, D as resolveComponentsConfig, O as toArray } from "../codegen-
|
|
1
|
+
export { d as BUILTIN_PRESETS, t as CODEGEN_CONTRACT_VERSION, n as CODEGEN_FILES, r as CODEGEN_NON_CONTRACT_FILES, p as HONO_OPENAPI_PRESET, m as UBEAN_CLIENT_PRESET, h as UBEAN_SERVER_PRESET, g as VUE_I18N_PRESET, _ as VUE_MACROS_PRESET, v as VUE_PRESET, y as VUE_ROUTER_PRESET, b as generateAutoImports, l as generateI18nTypes, x as generateImportsTransform, a as generateOpenApiTypes, o as generateOpenApiTypesFromServer, s as generatePageTypes, c as generateRouteTypes, i as generateTypes, S as getAutoImportPresets, C as getBuiltinComposables, w as getUbeanAutoImportConfig, T as getUbeanComponentsConfig, u as messagesToTsType, E as resolveAutoImportsConfig, D as resolveComponentsConfig, O as toArray } from "../codegen-BfisMsKI.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as resolveEnvModules } from "./types-BvLO9ngd.js";
|
|
2
2
|
import { isAbsolute, join, normalize, relative } from "pathe";
|
|
3
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
4
4
|
import { glob } from "tinyglobby";
|
|
5
5
|
import { createUnimport, toTypeDeclarationFile } from "unimport";
|
|
6
6
|
import openapiTS, { astToString } from "openapi-typescript";
|
|
@@ -961,7 +961,14 @@ async function generateOpenApiTypes(schema, options) {
|
|
|
961
961
|
""
|
|
962
962
|
].join("\n") + typesContent}\n`;
|
|
963
963
|
const filePath = join(outDir, fileName);
|
|
964
|
-
|
|
964
|
+
const tmpPath = `${filePath}.tmp`;
|
|
965
|
+
await writeFile(tmpPath, content, "utf-8");
|
|
966
|
+
try {
|
|
967
|
+
await rename(tmpPath, filePath);
|
|
968
|
+
} catch (error) {
|
|
969
|
+
await rm(tmpPath, { force: true });
|
|
970
|
+
throw error;
|
|
971
|
+
}
|
|
965
972
|
return filePath;
|
|
966
973
|
}
|
|
967
974
|
/**
|
package/dist/production.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { T as buildWithEnvironments, v as createIslandsSsrStubPlugin, y as generateCloudflareWorkerEntry, b as generateNodeServerEntry, x as generateStandardHandlerEntry, S as generateVirtualModulesToDisk, C as getPresetBuildConfig, w as serializePagesForEntry } from "./vite-
|
|
1
|
+
export { T as buildWithEnvironments, v as createIslandsSsrStubPlugin, y as generateCloudflareWorkerEntry, b as generateNodeServerEntry, x as generateStandardHandlerEntry, S as generateVirtualModulesToDisk, C as getPresetBuildConfig, w as serializePagesForEntry } from "./vite-XkW62Q_w.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as ssrSingletonProdOptimizeExclude, g as createVirtualRegistry, o as ssrSingletonProdSsr, x as __exportAll } from "./ssr-singleton-CD6tSMIE.js";
|
|
2
2
|
import { a as createRoutingVirtualModule, i as createPagesVirtualModule, n as createLocalesVirtualModule, r as createMetaVirtualModule, s as transformMacros, t as createAppVirtualModule } from "./virtual-modules-Cy1CnBzY.js";
|
|
3
|
-
import { a as generateOpenApiTypes, i as generateTypes } from "./codegen-
|
|
4
|
-
import { _ as sendWebResponse, a as createServerEntryVirtualModule, d as ensureDevApp, i as createClientEntryVirtualModule, n as ubeanVite, o as createVueAppEntryVirtualModule, r as composeHeadScripts, s as createVuePagesVirtualModule, v as toWebRequest, x as getDevScanCoordinator } from "./vue-
|
|
3
|
+
import { a as generateOpenApiTypes, i as generateTypes } from "./codegen-BfisMsKI.js";
|
|
4
|
+
import { _ as sendWebResponse, a as createServerEntryVirtualModule, d as ensureDevApp, i as createClientEntryVirtualModule, n as ubeanVite, o as createVueAppEntryVirtualModule, r as composeHeadScripts, s as createVuePagesVirtualModule, v as toWebRequest, x as getDevScanCoordinator } from "./vue-DAoQpWPA.js";
|
|
5
5
|
import { createStaticSsgRenderer } from "./static-render.js";
|
|
6
6
|
import { prerender, resolvePrerenderStaticDir } from "./prerender.js";
|
|
7
7
|
import { resolvePageKind } from "@ubean/vue";
|
|
@@ -63,6 +63,34 @@ function pageGlobExtensions(extensions, markdownExts = []) {
|
|
|
63
63
|
for (const ext of markdownExts) all.add(ext);
|
|
64
64
|
return [...all].join(",");
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* 布局 glob 的扩展名集合。
|
|
68
|
+
*
|
|
69
|
+
* 必须与扫描器的 `layoutsPattern`(`@ubean/vue` 的 `scan-pages.ts`)同源,否则会出现
|
|
70
|
+
* 「扫描到但 `import.meta.glob` 加载不到」(或反向)—— 与 `pageGlobExtensions` 同一个陷阱。
|
|
71
|
+
*
|
|
72
|
+
* 与页面的差异:不含 markdown 后缀(布局不是 markdown 页面),也不含元数据页的 `js`。
|
|
73
|
+
* `@ubean/vue` 不能依赖 `@ubean/config`(依赖白名单只有 vue + vue-router),
|
|
74
|
+
* 因此这里是第二份实现 —— 对齐由 `test/pages-extensions.test.ts` 的真实扫描锁住。
|
|
75
|
+
*/
|
|
76
|
+
function layoutGlobExtensions(extensions) {
|
|
77
|
+
const base = extensions && extensions.length > 0 ? extensions : [
|
|
78
|
+
"vue",
|
|
79
|
+
"tsx",
|
|
80
|
+
"jsx"
|
|
81
|
+
];
|
|
82
|
+
return [...new Set(base)].join(",");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 逗号串 → glob 的扩展名段(拼在 `**\/*.` 后面)。
|
|
86
|
+
*
|
|
87
|
+
* 单扩展名时**不能**用 brace:`**\/*.{vue}` 在 tinyglobby / Vite 的 glob 里匹配不到
|
|
88
|
+
* 任何文件(实测),`pages.extensions: ['vue']` 会因此得到空布局表。
|
|
89
|
+
*/
|
|
90
|
+
function globExtSegment(extsCsv) {
|
|
91
|
+
const list = extsCsv.split(",");
|
|
92
|
+
return list.length === 1 ? list[0] : `{${extsCsv}}`;
|
|
93
|
+
}
|
|
66
94
|
// src/ssg-entry.ts
|
|
67
95
|
/**
|
|
68
96
|
* 生成 renderer setup 代码块(`_rendererRoutes` + `_pageRenderer`)。
|
|
@@ -1544,7 +1572,7 @@ async function generateVirtualModulesToDisk(cwd, config, scanResult, virtualDir,
|
|
|
1544
1572
|
})), cwd));
|
|
1545
1573
|
registry.register(createMetaVirtualModule());
|
|
1546
1574
|
registry.register(createVuePagesVirtualModule(scanResult.pages, scanResult.layouts, scanResult.notFoundPage, scanResult.loadingPage, scanResult.errorPage, localeVueParamFromI18n(config.i18n)));
|
|
1547
|
-
registry.register(createVueAppEntryVirtualModule(scanResult.appEntry));
|
|
1575
|
+
registry.register(createVueAppEntryVirtualModule(scanResult.appEntry, { pinia: config.pinia }));
|
|
1548
1576
|
registry.register(createClientEntryVirtualModule());
|
|
1549
1577
|
}
|
|
1550
1578
|
registry.register(createAppVirtualModule(scanResult.apiRoutes, scanResult.middlewares, hasPages ? scanResult.pages : [], viteSrcPrefix || "/", pagesExts));
|
|
@@ -1573,7 +1601,7 @@ async function generateVirtualModulesToDisk(cwd, config, scanResult, virtualDir,
|
|
|
1573
1601
|
const pagesGlob = JSON.stringify(`${viteSrcPrefix}/pages/**/*.{${pagesExts}}`);
|
|
1574
1602
|
const routesGlob = JSON.stringify(`${viteSrcPrefix}/routes/**/*.{ts,js,mjs}`);
|
|
1575
1603
|
const middlewareGlob = JSON.stringify(`${viteSrcPrefix}/middleware/**/*.{ts,js,mjs}`);
|
|
1576
|
-
const layoutsGlob = JSON.stringify(`${viteSrcPrefix}/layouts
|
|
1604
|
+
const layoutsGlob = JSON.stringify(`${viteSrcPrefix}/layouts/**/*.${globExtSegment(layoutGlobExtensions(config.pages?.extensions))}`);
|
|
1577
1605
|
const cronsDirs = (Array.isArray(config.dir.crons) ? config.dir.crons : [config.dir.crons || "crons"]).map((d) => d.replace(/\\/g, "/"));
|
|
1578
1606
|
const cronsGlob = JSON.stringify(cronsDirs.length === 1 ? `${viteSrcPrefix}/${cronsDirs[0]}/**/*.{ts,js,mjs}` : `${viteSrcPrefix}/{${cronsDirs.join(",")}}/**/*.{ts,js,mjs}`);
|
|
1579
1607
|
const seoGlob = JSON.stringify(`${viteSrcPrefix}/{sitemap,robots,manifest,opengraph-image,icon,apple-icon}.{ts,js,mjs,mts,cjs}`);
|
package/dist/vite.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { g as createVirtualRegistry } from "./ssr-singleton-CD6tSMIE.js";
|
|
2
|
-
import { A as buildDevSsrRoutes, C as peekDevScanCoordinator, D as resolveDevSecurityHeaders, E as createDevAppReady, O as resolveLocaleVueParam, S as onDevScan, T as createDevApp, _ as sendWebResponse, b as createDevScanCoordinator, c as DEVTOOLS_PASS_THROUGH_PREFIXES, d as ensureDevApp, f as getDevApp, g as ubeanDevRequestPlugin, h as isViteResourceRequest, j as toVueRouterPagePath, k as enhanceDevApp, l as collectDevCssLinks, m as isFrameworkHtmlPage, p as injectStylesheetLinks, u as createUbeanRequestHandlers, v as toWebRequest, w as bootstrapDevApp, x as getDevScanCoordinator, y as DEV_SCAN_DIRS } from "./vue-
|
|
3
|
-
import { D as createCloudflarePreviewRunner, E as MINIFLARE_INSTALL_HINT, O as defaultLoadMiniflare, _ as ubeanPreviewPlugin, a as createEnvRunnerTransport, c as getDevWorkerEntrySource, d as attachPreviewMiddleware, f as createPreviewMiddleware, g as sendPreviewStatus, h as sendPreviewFile, i as bridgeEnvRunnerInvokes, k as readCompatibilityDate, l as invalidateDevWorkerModules, m as resolvePreviewFile, n as UBEAN_DEV_ENV_NAME, o as createUbeanDevEnvironmentFactory, p as previewMimeType, r as UbeanDevEnvironment, s as DEV_WORKER_FILE, t as ubeanPlugin, u as writeDevWorkerEntry } from "./vite-
|
|
2
|
+
import { A as buildDevSsrRoutes, C as peekDevScanCoordinator, D as resolveDevSecurityHeaders, E as createDevAppReady, O as resolveLocaleVueParam, S as onDevScan, T as createDevApp, _ as sendWebResponse, b as createDevScanCoordinator, c as DEVTOOLS_PASS_THROUGH_PREFIXES, d as ensureDevApp, f as getDevApp, g as ubeanDevRequestPlugin, h as isViteResourceRequest, j as toVueRouterPagePath, k as enhanceDevApp, l as collectDevCssLinks, m as isFrameworkHtmlPage, p as injectStylesheetLinks, u as createUbeanRequestHandlers, v as toWebRequest, w as bootstrapDevApp, x as getDevScanCoordinator, y as DEV_SCAN_DIRS } from "./vue-DAoQpWPA.js";
|
|
3
|
+
import { D as createCloudflarePreviewRunner, E as MINIFLARE_INSTALL_HINT, O as defaultLoadMiniflare, _ as ubeanPreviewPlugin, a as createEnvRunnerTransport, c as getDevWorkerEntrySource, d as attachPreviewMiddleware, f as createPreviewMiddleware, g as sendPreviewStatus, h as sendPreviewFile, i as bridgeEnvRunnerInvokes, k as readCompatibilityDate, l as invalidateDevWorkerModules, m as resolvePreviewFile, n as UBEAN_DEV_ENV_NAME, o as createUbeanDevEnvironmentFactory, p as previewMimeType, r as UbeanDevEnvironment, s as DEV_WORKER_FILE, t as ubeanPlugin, u as writeDevWorkerEntry } from "./vite-XkW62Q_w.js";
|
|
4
4
|
export { DEVTOOLS_PASS_THROUGH_PREFIXES, DEV_SCAN_DIRS, DEV_WORKER_FILE, MINIFLARE_INSTALL_HINT, UBEAN_DEV_ENV_NAME, UbeanDevEnvironment, attachPreviewMiddleware, bootstrapDevApp, bridgeEnvRunnerInvokes, buildDevSsrRoutes, collectDevCssLinks, createCloudflarePreviewRunner, createDevApp, createDevAppReady, createDevScanCoordinator, createEnvRunnerTransport, createPreviewMiddleware, createUbeanDevEnvironmentFactory, createUbeanRequestHandlers, createVirtualRegistry, defaultLoadMiniflare, enhanceDevApp, ensureDevApp, getDevApp, getDevScanCoordinator, getDevWorkerEntrySource, injectStylesheetLinks, invalidateDevWorkerModules, isFrameworkHtmlPage, isViteResourceRequest, onDevScan, peekDevScanCoordinator, previewMimeType, readCompatibilityDate, resolveDevSecurityHeaders, resolveLocaleVueParam, resolvePreviewFile, sendPreviewFile, sendPreviewStatus, sendWebResponse, toVueRouterPagePath, toWebRequest, ubeanDevRequestPlugin, ubeanPlugin, ubeanPreviewPlugin, writeDevWorkerEntry };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _ as defineVirtualModule, c as getComponentResolvers, g as createVirtualRegistry, i as ssrSingletonDevPolicy, l as getCssImports, u as getHeadScripts } from "./ssr-singleton-CD6tSMIE.js";
|
|
2
|
-
import { D as resolveComponentsConfig, E as resolveAutoImportsConfig, O as toArray, S as getAutoImportPresets, f as COMPONENT_HALF_GLOBS } from "./codegen-
|
|
2
|
+
import { D as resolveComponentsConfig, E as resolveAutoImportsConfig, O as toArray, S as getAutoImportPresets, f as COMPONENT_HALF_GLOBS } from "./codegen-BfisMsKI.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { generatePagesModuleSource } from "@ubean/vue/vite";
|
|
5
5
|
import { NOT_FOUND_ROUTE_PATH, resolvePageKind, sortPagesForRouting } from "@ubean/vue";
|
|
@@ -413,7 +413,7 @@ const DEV_SCAN_DIRS = [
|
|
|
413
413
|
"api",
|
|
414
414
|
"locales"
|
|
415
415
|
];
|
|
416
|
-
const SCAN_FILE_EXTENSIONS = /\.(ts|js|mjs|cjs|mts|cts|vue|json|md|mdx)$/;
|
|
416
|
+
const SCAN_FILE_EXTENSIONS = /\.(ts|js|mjs|cjs|mts|cts|vue|tsx|jsx|json|md|mdx)$/;
|
|
417
417
|
/**
|
|
418
418
|
* `srcDir` **根部**的入口文件名(`app.ts` / `app.vue` / `App.vue` / `server.ts` /
|
|
419
419
|
* `server.dev.ts` …)。它们不在任何被监听的目录里,却同样决定服务端行为
|
|
@@ -1168,19 +1168,40 @@ const EMPTY_APP_ENTRY = {
|
|
|
1168
1168
|
server: { exists: false },
|
|
1169
1169
|
client: { exists: false }
|
|
1170
1170
|
};
|
|
1171
|
-
|
|
1171
|
+
/**
|
|
1172
|
+
* 配置里的 `pinia` 是否要求自动注册。
|
|
1173
|
+
*
|
|
1174
|
+
* `pinia: true` 与 `pinia: { ... }` 都算开启;只有显式 `false`、`enabled: false`
|
|
1175
|
+
* 或 `disabled: true` 才关掉(`disabled` 是内建模块的通用关闭键)。
|
|
1176
|
+
*/
|
|
1177
|
+
function isPiniaAutoRegisterEnabled(pinia) {
|
|
1178
|
+
if (pinia === true) return true;
|
|
1179
|
+
if (!pinia || typeof pinia !== "object") return false;
|
|
1180
|
+
return pinia.enabled !== false && pinia.disabled !== true;
|
|
1181
|
+
}
|
|
1182
|
+
function createVueAppEntryVirtualModule(appEntry = EMPTY_APP_ENTRY, options = {}) {
|
|
1172
1183
|
return defineVirtualModule("virtual:ubean-app", () => {
|
|
1173
1184
|
const hasSharedApp = appEntry.shared.exists;
|
|
1174
1185
|
const hasServerApp = appEntry.server.exists;
|
|
1175
1186
|
const hasClientApp = appEntry.client.exists;
|
|
1176
1187
|
const hasRootApp = appEntry.root?.exists;
|
|
1188
|
+
const sharedImport = hasSharedApp ? `import _sharedApp from ${JSON.stringify(appEntry.shared.fullPath)};` : "const _sharedApp = null;";
|
|
1189
|
+
const serverImport = hasServerApp ? `import _serverApp from ${JSON.stringify(appEntry.server.fullPath)};` : "const _serverApp = null;";
|
|
1190
|
+
const clientImport = hasClientApp ? `import _clientApp from ${JSON.stringify(appEntry.client.fullPath)};` : "const _clientApp = null;";
|
|
1191
|
+
const rootAppImport = hasRootApp ? `import _rootApp from ${JSON.stringify(appEntry.root.fullPath)};` : "const _rootApp = null;";
|
|
1192
|
+
const pinia = isPiniaAutoRegisterEnabled(options.pinia);
|
|
1193
|
+
const piniaImport = pinia ? `import { createPinia } from 'pinia';\nimport { serializePiniaState, hydratePiniaState } from '@ubean/integrations/pinia/runtime';` : "";
|
|
1194
|
+
const piniaStateDefaults = pinia ? ` base.serializeState = serializePiniaState;\n base.hydrateState = hydratePiniaState;` : "";
|
|
1195
|
+
const piniaHelper = pinia ? `function _withPinia(config) {\n const setups = config.pinia && config.pinia.setup ? [config.pinia.setup] : [];\n config.plugins = [...(config.plugins || []), { plugin: { install(app) {\n const existing = app.config.globalProperties.$pinia;\n const instance = existing || createPinia();\n for (const setup of setups) setup(instance);\n if (!existing) app.use(instance);\n } } }];\n return config;\n}\n\n` : "";
|
|
1196
|
+
const piniaWrap = (config) => pinia ? `_withPinia(${config})` : config;
|
|
1177
1197
|
return `${`
|
|
1178
1198
|
// Auto-generated by ubean - do not edit
|
|
1179
1199
|
/* eslint-disable */
|
|
1180
|
-
${
|
|
1181
|
-
${
|
|
1182
|
-
${
|
|
1183
|
-
${
|
|
1200
|
+
${sharedImport}
|
|
1201
|
+
${serverImport}
|
|
1202
|
+
${clientImport}
|
|
1203
|
+
${rootAppImport}
|
|
1204
|
+
${piniaImport}
|
|
1184
1205
|
|
|
1185
1206
|
import {
|
|
1186
1207
|
createUbeanClientApp,
|
|
@@ -1284,6 +1305,17 @@ function _mergeAppConfig(base, ...configs) {
|
|
|
1284
1305
|
if (cfg.viewTransitions !== undefined) result.viewTransitions = cfg.viewTransitions;
|
|
1285
1306
|
if (cfg.serializeState) result.serializeState = cfg.serializeState;
|
|
1286
1307
|
if (cfg.hydrateState) result.hydrateState = cfg.hydrateState;
|
|
1308
|
+
if (cfg.pinia) {
|
|
1309
|
+
const prev = result.pinia;
|
|
1310
|
+
// setup 累加:多个配置的插件注册都执行(shared 先,client/server 后)。
|
|
1311
|
+
result.pinia = {
|
|
1312
|
+
setup: cfg.pinia.setup
|
|
1313
|
+
? prev && prev.setup
|
|
1314
|
+
? (pinia) => { prev.setup(pinia); cfg.pinia.setup(pinia); }
|
|
1315
|
+
: cfg.pinia.setup
|
|
1316
|
+
: prev && prev.setup
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1287
1319
|
}
|
|
1288
1320
|
// router.setup:累加语义 — shared 和 client/server 各自定义的 setup 都会执行
|
|
1289
1321
|
// (顺序:shared 先,client/server 后)。这样 shared 可放通用守卫(如埋点),
|
|
@@ -1306,15 +1338,16 @@ function _mergeAppConfig(base, ...configs) {
|
|
|
1306
1338
|
return result;
|
|
1307
1339
|
}
|
|
1308
1340
|
|
|
1309
|
-
export function resolveAppConfig(mode) {
|
|
1341
|
+
${piniaHelper}export function resolveAppConfig(mode) {
|
|
1310
1342
|
const base = createDefaultAppConfig();
|
|
1343
|
+
${piniaStateDefaults}
|
|
1311
1344
|
// src/app.vue / src/App.vue 自动检测(小写优先)作为默认 appRoot;
|
|
1312
1345
|
// 显式 defineApp({ appRoot }) 在下方 merge 时按"后者覆盖"盖过它。
|
|
1313
1346
|
// 注入 base 而非在消费点 || _rootApp,保证走 resolveAppConfig('server')
|
|
1314
1347
|
// 的 dev/prod SSR(经 @ubean/client/ssr 的 createVueRenderer)与客户端
|
|
1315
1348
|
// resolveAppConfig('client') 读到一致的 appRoot → 水合结构不 mismatch。
|
|
1316
1349
|
if (_rootApp) base.appRoot = _rootApp;
|
|
1317
|
-
if (!_sharedApp && !_serverApp && !_clientApp) return base;
|
|
1350
|
+
if (!_sharedApp && !_serverApp && !_clientApp) return ${piniaWrap("base")};
|
|
1318
1351
|
|
|
1319
1352
|
const sharedCfg = typeof _sharedApp === 'function' ? _sharedApp() : _sharedApp;
|
|
1320
1353
|
const serverCfg = mode === 'server' && _serverApp ? (typeof _serverApp === 'function' ? _serverApp() : _serverApp) : null;
|
|
@@ -1327,7 +1360,7 @@ export function resolveAppConfig(mode) {
|
|
|
1327
1360
|
if (mode === 'client' && clientCfg?.onClientReady) merged.onClientReady = clientCfg.onClientReady;
|
|
1328
1361
|
else if (mode === 'server' && serverCfg?.onAppCreated) merged.onAppCreated = serverCfg.onAppCreated;
|
|
1329
1362
|
|
|
1330
|
-
return merged;
|
|
1363
|
+
return ${piniaWrap("merged")};
|
|
1331
1364
|
}
|
|
1332
1365
|
|
|
1333
1366
|
/**
|
|
@@ -1669,7 +1702,7 @@ function ubeanVite(options) {
|
|
|
1669
1702
|
*/
|
|
1670
1703
|
function applyScan(result) {
|
|
1671
1704
|
virtualRegistry.register(createVuePagesVirtualModule(result.pages, result.layouts, result.notFoundPage, result.loadingPage, result.errorPage, localeVueParamFromConfig(ubeanConfig)));
|
|
1672
|
-
virtualRegistry.register(createVueAppEntryVirtualModule(result.appEntry));
|
|
1705
|
+
virtualRegistry.register(createVueAppEntryVirtualModule(result.appEntry, { pinia: ubeanConfig.pinia }));
|
|
1673
1706
|
virtualRegistry.register(createServerEntryVirtualModule(result.serverEntry));
|
|
1674
1707
|
virtualRegistry.register(createClientEntryVirtualModule());
|
|
1675
1708
|
}
|
package/dist/vue.d.ts
CHANGED
|
@@ -32,7 +32,14 @@ export declare function ubeanVite(options: UbeanViteOptions): Plugin[];
|
|
|
32
32
|
* 使 `createMatcherGuard()` 与 SPA head guard 在框架模式下同样可用)。
|
|
33
33
|
*/
|
|
34
34
|
export declare function createVuePagesVirtualModule(pages: ScannedPageRoute[], layouts: ScannedLayout[], notFoundPage?: ScannedPageRoute, loadingPage?: ScannedPageRoute, errorPage?: ScannedPageRoute, localeVueParam?: string): VirtualModule;
|
|
35
|
-
|
|
35
|
+
interface VueAppEntryModuleOptions {
|
|
36
|
+
/** `ubean.config.ts` 的 `pinia` 字段原值 */
|
|
37
|
+
pinia?: boolean | {
|
|
38
|
+
enabled?: boolean;
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare function createVueAppEntryVirtualModule(appEntry?: ScannedAppEntry, options?: VueAppEntryModuleOptions): VirtualModule;
|
|
36
43
|
/**
|
|
37
44
|
* 合并首帧 `<head>` 脚本的两个来源,去重后返回。
|
|
38
45
|
*
|
package/dist/vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as VUE_PLUGIN_INCLUDE, r as composeHeadScripts, i as createClientEntryVirtualModule, a as createServerEntryVirtualModule, o as createVueAppEntryVirtualModule, s as createVuePagesVirtualModule, n as default, n as ubeanVite } from "./vue-
|
|
1
|
+
export { t as VUE_PLUGIN_INCLUDE, r as composeHeadScripts, i as createClientEntryVirtualModule, a as createServerEntryVirtualModule, o as createVueAppEntryVirtualModule, s as createVuePagesVirtualModule, n as default, n as ubeanVite } from "./vue-DAoQpWPA.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ubean/build",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.7",
|
|
4
4
|
"description": "Vite plugins, production build, SSG prerender, type codegen, and Server Actions plugin for ubean",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -49,19 +49,19 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@intlify/unplugin-vue-i18n": "11.2.7",
|
|
52
|
-
"@ubean/app": "0.7.
|
|
53
|
-
"@ubean/client": "0.7.
|
|
54
|
-
"@ubean/config": "0.7.
|
|
55
|
-
"@ubean/i18n": "0.7.
|
|
56
|
-
"@ubean/islands": "0.7.
|
|
57
|
-
"@ubean/markdown": "0.7.
|
|
58
|
-
"@ubean/pages": "0.7.
|
|
59
|
-
"@ubean/preset": "0.7.
|
|
60
|
-
"@ubean/routes": "0.7.
|
|
61
|
-
"@ubean/scan": "0.7.
|
|
62
|
-
"@ubean/server": "0.7.
|
|
63
|
-
"@ubean/shared": "0.7.
|
|
64
|
-
"@ubean/vue": "0.7.
|
|
52
|
+
"@ubean/app": "0.7.7",
|
|
53
|
+
"@ubean/client": "0.7.7",
|
|
54
|
+
"@ubean/config": "0.7.7",
|
|
55
|
+
"@ubean/i18n": "0.7.7",
|
|
56
|
+
"@ubean/islands": "0.7.7",
|
|
57
|
+
"@ubean/markdown": "0.7.7",
|
|
58
|
+
"@ubean/pages": "0.7.7",
|
|
59
|
+
"@ubean/preset": "0.7.7",
|
|
60
|
+
"@ubean/routes": "0.7.7",
|
|
61
|
+
"@ubean/scan": "0.7.7",
|
|
62
|
+
"@ubean/server": "0.7.7",
|
|
63
|
+
"@ubean/shared": "0.7.7",
|
|
64
|
+
"@ubean/vue": "0.7.7",
|
|
65
65
|
"@vitejs/plugin-vue": "^6.0.10",
|
|
66
66
|
"@vitejs/plugin-vue-jsx": "^5.1.6",
|
|
67
67
|
"openapi-typescript": "^7.13.0",
|