@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.
@@ -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-D9q6Yu0z.js";
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
- await writeFile(filePath, content, "utf-8");
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
  /**
@@ -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-DQ6nL0Kv.js";
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-D9q6Yu0z.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-BSQATqn6.js";
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/**/*.{vue,ts}`);
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-BSQATqn6.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-DQ6nL0Kv.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-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-D9q6Yu0z.js";
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
- function createVueAppEntryVirtualModule(appEntry = EMPTY_APP_ENTRY) {
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
- ${hasSharedApp ? `import _sharedApp from ${JSON.stringify(appEntry.shared.fullPath)};` : "const _sharedApp = null;"}
1181
- ${hasServerApp ? `import _serverApp from ${JSON.stringify(appEntry.server.fullPath)};` : "const _serverApp = null;"}
1182
- ${hasClientApp ? `import _clientApp from ${JSON.stringify(appEntry.client.fullPath)};` : "const _clientApp = null;"}
1183
- ${hasRootApp ? `import _rootApp from ${JSON.stringify(appEntry.root.fullPath)};` : "const _rootApp = null;"}
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
- export declare function createVueAppEntryVirtualModule(appEntry?: ScannedAppEntry): VirtualModule;
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-BSQATqn6.js";
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.5",
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.5",
53
- "@ubean/client": "0.7.5",
54
- "@ubean/config": "0.7.5",
55
- "@ubean/i18n": "0.7.5",
56
- "@ubean/islands": "0.7.5",
57
- "@ubean/markdown": "0.7.5",
58
- "@ubean/pages": "0.7.5",
59
- "@ubean/preset": "0.7.5",
60
- "@ubean/routes": "0.7.5",
61
- "@ubean/scan": "0.7.5",
62
- "@ubean/server": "0.7.5",
63
- "@ubean/shared": "0.7.5",
64
- "@ubean/vue": "0.7.5",
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",