@uni-helper/vite-plugin-uni-pages 0.2.13 → 0.2.15

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.cjs CHANGED
@@ -36,12 +36,12 @@ function slash(str) {
36
36
 
37
37
  function getDeclaration(ctx) {
38
38
  const subPagesPath = ctx.subPageMetaData.map((sub) => {
39
- return sub.pages.map((v) => `"${vite.normalizePath(path.join(sub.root, v.path))}"`);
39
+ return sub.pages.map((v) => `"/${vite.normalizePath(path.join(sub.root, v.path))}"`);
40
40
  }).flat();
41
41
  const tabsPagesPath = ctx.pagesGlobConfig?.tabBar?.list?.map((v) => {
42
- return `"${v.pagePath}"`;
42
+ return `"/${v.pagePath}"`;
43
43
  }) ?? [];
44
- const allPagesPath = [...ctx.pageMetaData.filter((page) => !tabsPagesPath.includes(page.path)).map((v) => `"${v.path}"`), ...subPagesPath];
44
+ const allPagesPath = [...ctx.pageMetaData.filter((page) => !tabsPagesPath.includes(page.path)).map((v) => `"/${v.path}"`), ...subPagesPath];
45
45
  const code = `/* eslint-disable */
46
46
  /* prettier-ignore */
47
47
  // @ts-nocheck
@@ -92,10 +92,10 @@ async function parseSFC(code) {
92
92
  }).descriptor || compilerSfc.parse({
93
93
  source: code
94
94
  });
95
- } catch {
96
- throw new Error(
97
- `[vite-plugin-uni-pages] Vue3's "@vue/compiler-sfc" is required.`
98
- );
95
+ } catch (error) {
96
+ throw new Error(`[vite-plugin-uni-pages] Vue3's "@vue/compiler-sfc" is required.
97
+ Original error:
98
+ ${error}`);
99
99
  }
100
100
  }
101
101
  function parseCustomBlock(block, filePath, options) {
@@ -441,41 +441,44 @@ class PageContext {
441
441
  Object.assign(pageMetaDatum, routeBlock.content);
442
442
  return pageMetaDatum;
443
443
  }
444
- async parsePages(pages, overrides) {
444
+ /**
445
+ * parse pages rules && set page type
446
+ * @param pages page path array
447
+ * @param type page type
448
+ * @param overrides custom page config
449
+ * @returns pages rules
450
+ */
451
+ async parsePages(pages, type, overrides) {
445
452
  const generatedPageMetaData = await Promise.all(pages.map(async (page) => await this.parsePage(page)));
446
453
  const customPageMetaData = overrides || [];
447
454
  const result = customPageMetaData.length ? mergePageMetaDataArray(generatedPageMetaData.concat(customPageMetaData)) : generatedPageMetaData;
448
- this.setHomePage(result);
449
- result.sort((page) => page.type === "home" ? -1 : 0);
450
- return result;
455
+ return type === "main" ? this.setHomePage(result) : result;
451
456
  }
457
+ /**
458
+ * set home page
459
+ * @param result pages rules array
460
+ * @returns pages rules
461
+ */
452
462
  setHomePage(result) {
453
- const hasHome = result.some((page) => {
454
- if (page.type === "home")
455
- return true;
456
- const base = page.path.split("/")[0];
457
- if (this.options.subPackages.includes(`src/${base}`))
458
- return true;
459
- return false;
460
- });
461
- if (hasHome)
462
- return true;
463
- const isFoundHome = result.some((item) => {
464
- if (this.options.homePage.some((v) => v.startsWith(item.path))) {
465
- item.type = "home";
466
- return true;
467
- } else {
468
- return false;
463
+ const hasHome = result.some(({ type }) => type === "home");
464
+ if (!hasHome) {
465
+ const isFoundHome = result.some((item) => {
466
+ const isFound = this.options.homePage.find((v) => v === item.path);
467
+ if (isFound)
468
+ item.type = "home";
469
+ return isFound;
470
+ });
471
+ if (!isFoundHome) {
472
+ this.logger?.warn('No home page found, check the configuration of pages.config.ts, or add the `homePage` option to UniPages in vite.config.js, or add `type="home"` to the routeBlock of your vue page.', {
473
+ timestamp: true
474
+ });
469
475
  }
470
- });
471
- if (isFoundHome)
472
- return true;
473
- this.logger?.warn('No home page found, check the configuration of pages.config.ts, or add the `homePage` option to UniPages in vite.config.js, or add `type="home"` to the routeBlock of your vue page.', {
474
- timestamp: true
475
- });
476
+ }
477
+ result.sort((page) => page.type === "home" ? -1 : 0);
478
+ return result;
476
479
  }
477
480
  async mergePageMetaData() {
478
- const pageMetaData = await this.parsePages(this.pagesPath, this.pagesGlobConfig?.pages);
481
+ const pageMetaData = await this.parsePages(this.pagesPath, "main", this.pagesGlobConfig?.pages);
479
482
  this.pageMetaData = pageMetaData;
480
483
  debug.pages(this.pageMetaData);
481
484
  }
@@ -485,7 +488,7 @@ class PageContext {
485
488
  for (const [dir, pages] of Object.entries(this.subPagesPath)) {
486
489
  const root = path__default.basename(dir);
487
490
  const globPackage = subPackages?.find((v) => v.root === root);
488
- subPageMaps[root] = await this.parsePages(pages, globPackage?.pages);
491
+ subPageMaps[root] = await this.parsePages(pages, "sub", globPackage?.pages);
489
492
  subPageMaps[root] = subPageMaps[root].map((page) => ({ ...page, path: slash(path__default.relative(root, page.path)) }));
490
493
  }
491
494
  for (const { root, pages } of subPackages) {
@@ -517,12 +520,10 @@ class PageContext {
517
520
  await this.mergePageMetaData();
518
521
  await this.mergeSubPageMetaData();
519
522
  this.options.onAfterMergePageMetaData(this);
520
- if (this.withUniPlatform) {
521
- const pagesMap = /* @__PURE__ */ new Map();
522
- const pages = this.pageMetaData.filter((v) => !/\..*$/.test(v.path) || v.path.includes(uniEnv.platform)).map((v) => ({ ...v, path: v.path.replace(/\..*$/, "") }));
523
- pages.forEach((v) => pagesMap.set(v.path, v));
524
- this.pageMetaData = [...pagesMap.values()];
525
- }
523
+ const pagesMap = /* @__PURE__ */ new Map();
524
+ const pages = this.withUniPlatform ? this.pageMetaData.filter((v) => !/\..*$/.test(v.path) || v.path.includes(uniEnv.platform)).map((v) => ({ ...v, path: v.path.replace(/\..*$/, "") })) : this.pageMetaData;
525
+ pages.forEach((v) => pagesMap.set(v.path, v));
526
+ this.pageMetaData = [...pagesMap.values()];
526
527
  this.options.onBeforeWriteFile(this);
527
528
  const data = {
528
529
  ...this.pagesGlobConfig,
package/dist/index.d.cts CHANGED
@@ -659,8 +659,20 @@ declare class PageContext {
659
659
  setupWatcher(watcher: FSWatcher): Promise<void>;
660
660
  onUpdate(): void;
661
661
  parsePage(page: PagePath): Promise<PageMetaDatum>;
662
- parsePages(pages: PagePath[], overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
663
- setHomePage(result: PageMetaDatum[]): true | undefined;
662
+ /**
663
+ * parse pages rules && set page type
664
+ * @param pages page path array
665
+ * @param type page type
666
+ * @param overrides custom page config
667
+ * @returns pages rules
668
+ */
669
+ parsePages(pages: PagePath[], type: 'main' | 'sub', overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
670
+ /**
671
+ * set home page
672
+ * @param result pages rules array
673
+ * @returns pages rules
674
+ */
675
+ setHomePage(result: PageMetaDatum[]): PageMetaDatum[];
664
676
  mergePageMetaData(): Promise<void>;
665
677
  mergeSubPageMetaData(): Promise<void>;
666
678
  updatePagesJSON(filepath?: string): Promise<boolean>;
package/dist/index.d.mts CHANGED
@@ -659,8 +659,20 @@ declare class PageContext {
659
659
  setupWatcher(watcher: FSWatcher): Promise<void>;
660
660
  onUpdate(): void;
661
661
  parsePage(page: PagePath): Promise<PageMetaDatum>;
662
- parsePages(pages: PagePath[], overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
663
- setHomePage(result: PageMetaDatum[]): true | undefined;
662
+ /**
663
+ * parse pages rules && set page type
664
+ * @param pages page path array
665
+ * @param type page type
666
+ * @param overrides custom page config
667
+ * @returns pages rules
668
+ */
669
+ parsePages(pages: PagePath[], type: 'main' | 'sub', overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
670
+ /**
671
+ * set home page
672
+ * @param result pages rules array
673
+ * @returns pages rules
674
+ */
675
+ setHomePage(result: PageMetaDatum[]): PageMetaDatum[];
664
676
  mergePageMetaData(): Promise<void>;
665
677
  mergeSubPageMetaData(): Promise<void>;
666
678
  updatePagesJSON(filepath?: string): Promise<boolean>;
package/dist/index.d.ts CHANGED
@@ -659,8 +659,20 @@ declare class PageContext {
659
659
  setupWatcher(watcher: FSWatcher): Promise<void>;
660
660
  onUpdate(): void;
661
661
  parsePage(page: PagePath): Promise<PageMetaDatum>;
662
- parsePages(pages: PagePath[], overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
663
- setHomePage(result: PageMetaDatum[]): true | undefined;
662
+ /**
663
+ * parse pages rules && set page type
664
+ * @param pages page path array
665
+ * @param type page type
666
+ * @param overrides custom page config
667
+ * @returns pages rules
668
+ */
669
+ parsePages(pages: PagePath[], type: 'main' | 'sub', overrides?: PageMetaDatum[]): Promise<PageMetaDatum[]>;
670
+ /**
671
+ * set home page
672
+ * @param result pages rules array
673
+ * @returns pages rules
674
+ */
675
+ setHomePage(result: PageMetaDatum[]): PageMetaDatum[];
664
676
  mergePageMetaData(): Promise<void>;
665
677
  mergeSubPageMetaData(): Promise<void>;
666
678
  updatePagesJSON(filepath?: string): Promise<boolean>;
package/dist/index.mjs CHANGED
@@ -21,12 +21,12 @@ function slash(str) {
21
21
 
22
22
  function getDeclaration(ctx) {
23
23
  const subPagesPath = ctx.subPageMetaData.map((sub) => {
24
- return sub.pages.map((v) => `"${normalizePath(join(sub.root, v.path))}"`);
24
+ return sub.pages.map((v) => `"/${normalizePath(join(sub.root, v.path))}"`);
25
25
  }).flat();
26
26
  const tabsPagesPath = ctx.pagesGlobConfig?.tabBar?.list?.map((v) => {
27
- return `"${v.pagePath}"`;
27
+ return `"/${v.pagePath}"`;
28
28
  }) ?? [];
29
- const allPagesPath = [...ctx.pageMetaData.filter((page) => !tabsPagesPath.includes(page.path)).map((v) => `"${v.path}"`), ...subPagesPath];
29
+ const allPagesPath = [...ctx.pageMetaData.filter((page) => !tabsPagesPath.includes(page.path)).map((v) => `"/${v.path}"`), ...subPagesPath];
30
30
  const code = `/* eslint-disable */
31
31
  /* prettier-ignore */
32
32
  // @ts-nocheck
@@ -77,10 +77,10 @@ async function parseSFC(code) {
77
77
  }).descriptor || parse({
78
78
  source: code
79
79
  });
80
- } catch {
81
- throw new Error(
82
- `[vite-plugin-uni-pages] Vue3's "@vue/compiler-sfc" is required.`
83
- );
80
+ } catch (error) {
81
+ throw new Error(`[vite-plugin-uni-pages] Vue3's "@vue/compiler-sfc" is required.
82
+ Original error:
83
+ ${error}`);
84
84
  }
85
85
  }
86
86
  function parseCustomBlock(block, filePath, options) {
@@ -426,41 +426,44 @@ class PageContext {
426
426
  Object.assign(pageMetaDatum, routeBlock.content);
427
427
  return pageMetaDatum;
428
428
  }
429
- async parsePages(pages, overrides) {
429
+ /**
430
+ * parse pages rules && set page type
431
+ * @param pages page path array
432
+ * @param type page type
433
+ * @param overrides custom page config
434
+ * @returns pages rules
435
+ */
436
+ async parsePages(pages, type, overrides) {
430
437
  const generatedPageMetaData = await Promise.all(pages.map(async (page) => await this.parsePage(page)));
431
438
  const customPageMetaData = overrides || [];
432
439
  const result = customPageMetaData.length ? mergePageMetaDataArray(generatedPageMetaData.concat(customPageMetaData)) : generatedPageMetaData;
433
- this.setHomePage(result);
434
- result.sort((page) => page.type === "home" ? -1 : 0);
435
- return result;
440
+ return type === "main" ? this.setHomePage(result) : result;
436
441
  }
442
+ /**
443
+ * set home page
444
+ * @param result pages rules array
445
+ * @returns pages rules
446
+ */
437
447
  setHomePage(result) {
438
- const hasHome = result.some((page) => {
439
- if (page.type === "home")
440
- return true;
441
- const base = page.path.split("/")[0];
442
- if (this.options.subPackages.includes(`src/${base}`))
443
- return true;
444
- return false;
445
- });
446
- if (hasHome)
447
- return true;
448
- const isFoundHome = result.some((item) => {
449
- if (this.options.homePage.some((v) => v.startsWith(item.path))) {
450
- item.type = "home";
451
- return true;
452
- } else {
453
- return false;
448
+ const hasHome = result.some(({ type }) => type === "home");
449
+ if (!hasHome) {
450
+ const isFoundHome = result.some((item) => {
451
+ const isFound = this.options.homePage.find((v) => v === item.path);
452
+ if (isFound)
453
+ item.type = "home";
454
+ return isFound;
455
+ });
456
+ if (!isFoundHome) {
457
+ this.logger?.warn('No home page found, check the configuration of pages.config.ts, or add the `homePage` option to UniPages in vite.config.js, or add `type="home"` to the routeBlock of your vue page.', {
458
+ timestamp: true
459
+ });
454
460
  }
455
- });
456
- if (isFoundHome)
457
- return true;
458
- this.logger?.warn('No home page found, check the configuration of pages.config.ts, or add the `homePage` option to UniPages in vite.config.js, or add `type="home"` to the routeBlock of your vue page.', {
459
- timestamp: true
460
- });
461
+ }
462
+ result.sort((page) => page.type === "home" ? -1 : 0);
463
+ return result;
461
464
  }
462
465
  async mergePageMetaData() {
463
- const pageMetaData = await this.parsePages(this.pagesPath, this.pagesGlobConfig?.pages);
466
+ const pageMetaData = await this.parsePages(this.pagesPath, "main", this.pagesGlobConfig?.pages);
464
467
  this.pageMetaData = pageMetaData;
465
468
  debug.pages(this.pageMetaData);
466
469
  }
@@ -470,7 +473,7 @@ class PageContext {
470
473
  for (const [dir, pages] of Object.entries(this.subPagesPath)) {
471
474
  const root = path.basename(dir);
472
475
  const globPackage = subPackages?.find((v) => v.root === root);
473
- subPageMaps[root] = await this.parsePages(pages, globPackage?.pages);
476
+ subPageMaps[root] = await this.parsePages(pages, "sub", globPackage?.pages);
474
477
  subPageMaps[root] = subPageMaps[root].map((page) => ({ ...page, path: slash(path.relative(root, page.path)) }));
475
478
  }
476
479
  for (const { root, pages } of subPackages) {
@@ -502,12 +505,10 @@ class PageContext {
502
505
  await this.mergePageMetaData();
503
506
  await this.mergeSubPageMetaData();
504
507
  this.options.onAfterMergePageMetaData(this);
505
- if (this.withUniPlatform) {
506
- const pagesMap = /* @__PURE__ */ new Map();
507
- const pages = this.pageMetaData.filter((v) => !/\..*$/.test(v.path) || v.path.includes(platform)).map((v) => ({ ...v, path: v.path.replace(/\..*$/, "") }));
508
- pages.forEach((v) => pagesMap.set(v.path, v));
509
- this.pageMetaData = [...pagesMap.values()];
510
- }
508
+ const pagesMap = /* @__PURE__ */ new Map();
509
+ const pages = this.withUniPlatform ? this.pageMetaData.filter((v) => !/\..*$/.test(v.path) || v.path.includes(platform)).map((v) => ({ ...v, path: v.path.replace(/\..*$/, "") })) : this.pageMetaData;
510
+ pages.forEach((v) => pagesMap.set(v.path, v));
511
+ this.pageMetaData = [...pagesMap.values()];
511
512
  this.options.onBeforeWriteFile(this);
512
513
  const data = {
513
514
  ...this.pagesGlobConfig,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uni-helper/vite-plugin-uni-pages",
3
3
  "type": "module",
4
- "version": "0.2.13",
4
+ "version": "0.2.15",
5
5
  "description": "File system based routing for uni-app applications using Vite",
6
6
  "author": "KeJun",
7
7
  "license": "MIT",
@@ -36,21 +36,21 @@
36
36
  "dist"
37
37
  ],
38
38
  "dependencies": {
39
- "@uni-helper/uni-env": "^0.0.3",
40
- "@vue/compiler-sfc": "^3.3.4",
41
- "chokidar": "^3.5.3",
39
+ "@uni-helper/uni-env": "^0.1.1",
40
+ "@vue/compiler-sfc": "^3.4.21",
41
+ "chokidar": "^3.6.0",
42
42
  "debug": "^4.3.4",
43
- "fast-glob": "^3.3.1",
43
+ "fast-glob": "^3.3.2",
44
44
  "json5": "^2.2.3",
45
45
  "lodash-unified": "^1.0.3",
46
- "magic-string": "^0.30.4",
46
+ "magic-string": "^0.30.8",
47
47
  "unconfig": "^0.3.11",
48
- "yaml": "^2.3.2"
48
+ "yaml": "^2.4.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@antfu/utils": "^0.7.6",
52
- "@types/debug": "^4.1.9",
53
- "@types/node": "^20.8.3"
51
+ "@antfu/utils": "^0.7.7",
52
+ "@types/debug": "^4.1.12",
53
+ "@types/node": "^20.11.24"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "unbuild",