@uni-helper/vite-plugin-uni-pages 0.0.4 → 0.0.5
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/README.Zh-CN.md +1 -1
- package/README.md +1 -1
- package/dist/index.cjs +9 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +20 -2
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -9
- package/dist/config/index.cjs +0 -33
- package/dist/config/index.cjs.map +0 -1
- package/dist/config/index.d.ts +0 -5
- package/dist/config/index.js +0 -8
- package/dist/config/index.js.map +0 -1
- package/dist/types-7dcfd17b.d.ts +0 -18
package/README.Zh-CN.md
CHANGED
|
@@ -27,7 +27,7 @@ export default defineConfig({
|
|
|
27
27
|
|
|
28
28
|
```ts
|
|
29
29
|
// pages.config.ts
|
|
30
|
-
import { definePages } from "@uni-helper/vite-plugin-uni-pages
|
|
30
|
+
import { definePages } from "@uni-helper/vite-plugin-uni-pages";
|
|
31
31
|
|
|
32
32
|
export default definePages({
|
|
33
33
|
// You can also specify pages, and the content will be merged
|
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ Define global properties in `pages.config.(ts|mts|cts|js|cjs|mjs|json)`
|
|
|
27
27
|
|
|
28
28
|
```ts
|
|
29
29
|
// pages.config.ts
|
|
30
|
-
import { definePages } from "@uni-helper/vite-plugin-uni-pages
|
|
30
|
+
import { definePages } from "@uni-helper/vite-plugin-uni-pages";
|
|
31
31
|
|
|
32
32
|
export default definePages({
|
|
33
33
|
// You can also specify pages, and the content will be merged
|
package/dist/index.cjs
CHANGED
|
@@ -27,7 +27,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
27
27
|
var src_exports = {};
|
|
28
28
|
__export(src_exports, {
|
|
29
29
|
VitePluginUniPages: () => VitePluginUniPages,
|
|
30
|
-
default: () => src_default
|
|
30
|
+
default: () => src_default,
|
|
31
|
+
definePages: () => definePages
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(src_exports);
|
|
33
34
|
var import_vite3 = require("vite");
|
|
@@ -192,6 +193,11 @@ var Context = class {
|
|
|
192
193
|
}
|
|
193
194
|
};
|
|
194
195
|
|
|
196
|
+
// src/config/index.ts
|
|
197
|
+
function definePages(config) {
|
|
198
|
+
return config;
|
|
199
|
+
}
|
|
200
|
+
|
|
195
201
|
// src/index.ts
|
|
196
202
|
function resolveOptions(userOptions) {
|
|
197
203
|
return {
|
|
@@ -278,6 +284,7 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
278
284
|
var src_default = VitePluginUniPages;
|
|
279
285
|
// Annotate the CommonJS export names for ESM import in node:
|
|
280
286
|
0 && (module.exports = {
|
|
281
|
-
VitePluginUniPages
|
|
287
|
+
VitePluginUniPages,
|
|
288
|
+
definePages
|
|
282
289
|
});
|
|
283
290
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/constant.ts","../src/context/index.ts"],"sourcesContent":["import { ModuleNode, normalizePath, Plugin } from \"vite\";\nimport { ResolvedOptions, UserOptions } from \"./types\";\nimport { isPagePath, logger } from \"./utils\";\nimport { virtualModuleId, resolvedVirtualModuleId } from \"./constant\";\nimport { Context } from \"./context\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n exclude: [],\n onBeforeLoadUserConfig: () => {},\n onAfterLoadUserConfig: () => {},\n onBeforeScanPages: () => {},\n onAfterScanPages: () => {},\n onBeforeMergePagesMeta: () => {},\n onAfterMergePagesMeta: () => {},\n onBeforeWriteFile: () => {},\n onAfterWriteFile: () => {},\n ...userOptions,\n };\n}\n\nexport const VitePluginUniPages = async (\n userOptions: UserOptions = {}\n): Promise<Plugin> => {\n const options = resolveOptions(userOptions);\n logger.debug(\"Create uni-pages context with\", options);\n const ctx = new Context(options);\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n async configureServer({ watcher, moduleGraph, ws }) {\n const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();\n logger.debug(\"Add watcher\", pagesConfigSourcePaths);\n watcher.add(pagesConfigSourcePaths);\n\n const reloadModule = (module: ModuleNode | undefined, path = \"*\") => {\n if (module) {\n moduleGraph.invalidateModule(module);\n if (ws) {\n ws.send({\n path,\n type: \"full-reload\",\n });\n }\n }\n };\n const updateVirtualModule = () => {\n logger.debug(\"Update virtualModule\");\n const module = moduleGraph.getModuleById(resolvedVirtualModuleId);\n reloadModule(module);\n };\n\n watcher.on(\"change\", async (path) => {\n if (\n pagesConfigSourcePaths.includes(normalizePath(path)) ||\n isPagePath(path, options)\n ) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"add\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"unlink\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n },\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return ctx.virtualModule();\n }\n },\n };\n};\n\nexport default VitePluginUniPages;\n","import { resolve } from \"path\";\nimport { ResolvedOptions } from \"./types\";\nimport { createFilter } from \"vite\";\nimport consola from \"consola\";\n\nexport const isPagePath = (path: string, options: ResolvedOptions) => {\n const dirPath = resolve(process.cwd(), options.pagesDir);\n const filter = createFilter(dirPath + \"/**/*.(vue|nvue)\", options.exclude);\n return filter(path);\n};\n\nexport const logger = consola.create({\n defaults: {\n tag: \"vite-plugin-uni-pages\",\n },\n});\n","export const virtualModuleId = \"virtual:uni-pages\";\nexport const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n","import { extname, join, relative, resolve } from \"path\";\nimport { loadConfig } from \"unconfig\";\nimport { normalizePath } from \"vite\";\nimport { PagesConfig } from \"../config/types\";\nimport { PageMeta, PagePathInfo, ResolvedOptions } from \"../types\";\nimport fg from \"fast-glob\";\nimport { parse as JSONParse } from \"jsonc-parser\";\nimport { parse } from \"@vue/compiler-dom\";\nimport fs from \"fs\";\nimport { defu } from \"defu\";\nimport { logger } from \"../utils\";\nexport class Context {\n options: ResolvedOptions;\n pagesConfig!: PagesConfig;\n pagesPathInfo: PagePathInfo[] = [];\n pagesMeta: PageMeta[] = [];\n constructor(options: ResolvedOptions) {\n this.options = options;\n this.createOrUpdatePagesJSON();\n }\n\n async loadUserPagesConfig() {\n const { config } = await loadConfig({\n sources: [\n {\n files: \"pages.config\",\n },\n ],\n merge: false,\n });\n if (!config) {\n logger.error(\n \"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)\"\n );\n process.exit(-1);\n }\n logger.debug(\"Loaded user pages config\", config);\n this.pagesConfig = config as PagesConfig;\n }\n\n async scanPages() {\n const files = await fg(\"**/*.(vue|nvue)\", {\n ignore: [\"node_modules\", \".git\", \"**/__*__/*\", ...this.options.exclude],\n onlyFiles: true,\n cwd: resolve(process.cwd(), this.options.pagesDir),\n });\n const basePath = relative(\n resolve(process.cwd(), this.options.outDir),\n this.options.pagesDir\n );\n this.pagesPathInfo = files.map((file) => {\n return {\n relative: normalizePath(join(basePath, file)),\n absolute: normalizePath(\n resolve(process.cwd(), this.options.pagesDir, file)\n ),\n };\n });\n logger.debug(\"Scanned pages dir\", this.pagesPathInfo);\n }\n\n async parsePage({ relative, absolute }: PagePathInfo): Promise<PageMeta> {\n const code = await fs.promises.readFile(absolute, {\n encoding: \"utf-8\",\n });\n const t = parse(code);\n const path = relative.replace(extname(relative), \"\");\n let pageMeta: PageMeta = {\n path,\n type: \"page\",\n };\n t?.children.forEach((v) => {\n if (v.type !== 1) {\n return;\n }\n if (v.tag === \"route\") {\n v.props.forEach((prop) => {\n if (prop.type === 6 && prop.name === \"type\") {\n pageMeta.type = prop.value?.content ?? pageMeta.type;\n }\n });\n const astContent = v.children?.[0];\n if (astContent && astContent.type === 2) {\n const _pageMeta = JSONParse(astContent.content);\n Object.keys(_pageMeta).forEach((key) => {\n pageMeta[key] = _pageMeta[key];\n });\n // overwrite path\n pageMeta[\"path\"] = path;\n }\n }\n });\n return pageMeta;\n }\n\n async mergePagesMeta() {\n const pagesMeta = await Promise.all(\n this.pagesPathInfo?.map(async (page) => await this.parsePage(page))\n );\n const pages = Object.values(defu({}, pagesMeta, this.pagesConfig.pages));\n // @ts-ignore\n pages.sort((a) => (a.type === \"home\" ? -1 : 0));\n // @ts-ignore\n this.pagesMeta = pages;\n logger.debug(\"merged pages\", this.pagesMeta);\n }\n\n async createOrUpdatePagesJSON() {\n const outputName = \"pages.json\";\n const resolvedOutput = normalizePath(\n resolve(process.cwd(), this.options.outDir, outputName)\n );\n\n // 如果不存在,先输出一个占位文件\n if (!fs.existsSync(resolvedOutput)) {\n fs.writeFileSync(resolvedOutput, `{\"pages\": [{\"path\": \"\"}]}`, {\n encoding: \"utf-8\",\n });\n }\n\n this.options.onBeforeLoadUserConfig(this);\n await this.loadUserPagesConfig();\n this.options.onAfterLoadUserConfig(this);\n\n this.options.onBeforeScanPages(this);\n await this.scanPages();\n this.options.onAfterScanPages(this);\n\n this.options.onBeforeMergePagesMeta(this);\n await this.mergePagesMeta();\n this.options.onAfterMergePagesMeta(this);\n\n this.options.onBeforeWriteFile(this);\n fs.writeFileSync(resolvedOutput, this.pagesJson, {\n encoding: \"utf-8\",\n });\n this.options.onAfterWriteFile(this);\n }\n\n async virtualModule() {\n return `export const pages = ${JSON.stringify(this.pagesMeta)};`;\n }\n\n async pagesConfigSourcePaths() {\n return await fg(\"pages.config.(ts|mts|cts|js|cjs|mjs|json)\", {\n deep: 0,\n onlyFiles: true,\n absolute: true,\n });\n }\n\n get pagesJson() {\n return JSON.stringify({\n ...this.pagesConfig,\n pages: this.pagesMeta,\n });\n }\n}\n"],"mappings":"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","names":["import_vite","consola","import_path","import_vite","fg","relative","fs","_a","JSONParse","module"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/constant.ts","../src/context/index.ts","../src/config/index.ts"],"sourcesContent":["import { ModuleNode, normalizePath, Plugin } from \"vite\";\nimport { ResolvedOptions, UserOptions } from \"./types\";\nimport { isPagePath, logger } from \"./utils\";\nimport { virtualModuleId, resolvedVirtualModuleId } from \"./constant\";\nimport { Context } from \"./context\";\n\nexport * from \"./config\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n exclude: [],\n onBeforeLoadUserConfig: () => {},\n onAfterLoadUserConfig: () => {},\n onBeforeScanPages: () => {},\n onAfterScanPages: () => {},\n onBeforeMergePagesMeta: () => {},\n onAfterMergePagesMeta: () => {},\n onBeforeWriteFile: () => {},\n onAfterWriteFile: () => {},\n ...userOptions,\n };\n}\n\nexport const VitePluginUniPages = async (\n userOptions: UserOptions = {}\n): Promise<Plugin> => {\n const options = resolveOptions(userOptions);\n logger.debug(\"Create uni-pages context with\", options);\n const ctx = new Context(options);\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n async configureServer({ watcher, moduleGraph, ws }) {\n const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();\n logger.debug(\"Add watcher\", pagesConfigSourcePaths);\n watcher.add(pagesConfigSourcePaths);\n\n const reloadModule = (module: ModuleNode | undefined, path = \"*\") => {\n if (module) {\n moduleGraph.invalidateModule(module);\n if (ws) {\n ws.send({\n path,\n type: \"full-reload\",\n });\n }\n }\n };\n const updateVirtualModule = () => {\n logger.debug(\"Update virtualModule\");\n const module = moduleGraph.getModuleById(resolvedVirtualModuleId);\n reloadModule(module);\n };\n\n watcher.on(\"change\", async (path) => {\n if (\n pagesConfigSourcePaths.includes(normalizePath(path)) ||\n isPagePath(path, options)\n ) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"add\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"unlink\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n },\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return ctx.virtualModule();\n }\n },\n };\n};\n\nexport default VitePluginUniPages;\n","import { resolve } from \"path\";\nimport { ResolvedOptions } from \"./types\";\nimport { createFilter } from \"vite\";\nimport consola from \"consola\";\n\nexport const isPagePath = (path: string, options: ResolvedOptions) => {\n const dirPath = resolve(process.cwd(), options.pagesDir);\n const filter = createFilter(dirPath + \"/**/*.(vue|nvue)\", options.exclude);\n return filter(path);\n};\n\nexport const logger = consola.create({\n defaults: {\n tag: \"vite-plugin-uni-pages\",\n },\n});\n","export const virtualModuleId = \"virtual:uni-pages\";\nexport const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n","import { extname, join, relative, resolve } from \"path\";\nimport { loadConfig } from \"unconfig\";\nimport { normalizePath } from \"vite\";\nimport { PagesConfig } from \"../config/types\";\nimport { PageMeta, PagePathInfo, ResolvedOptions } from \"../types\";\nimport fg from \"fast-glob\";\nimport { parse as JSONParse } from \"jsonc-parser\";\nimport { parse } from \"@vue/compiler-dom\";\nimport fs from \"fs\";\nimport { defu } from \"defu\";\nimport { logger } from \"../utils\";\nexport class Context {\n options: ResolvedOptions;\n pagesConfig!: PagesConfig;\n pagesPathInfo: PagePathInfo[] = [];\n pagesMeta: PageMeta[] = [];\n constructor(options: ResolvedOptions) {\n this.options = options;\n this.createOrUpdatePagesJSON();\n }\n\n async loadUserPagesConfig() {\n const { config } = await loadConfig({\n sources: [\n {\n files: \"pages.config\",\n },\n ],\n merge: false,\n });\n if (!config) {\n logger.error(\n \"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)\"\n );\n process.exit(-1);\n }\n logger.debug(\"Loaded user pages config\", config);\n this.pagesConfig = config as PagesConfig;\n }\n\n async scanPages() {\n const files = await fg(\"**/*.(vue|nvue)\", {\n ignore: [\"node_modules\", \".git\", \"**/__*__/*\", ...this.options.exclude],\n onlyFiles: true,\n cwd: resolve(process.cwd(), this.options.pagesDir),\n });\n const basePath = relative(\n resolve(process.cwd(), this.options.outDir),\n this.options.pagesDir\n );\n this.pagesPathInfo = files.map((file) => {\n return {\n relative: normalizePath(join(basePath, file)),\n absolute: normalizePath(\n resolve(process.cwd(), this.options.pagesDir, file)\n ),\n };\n });\n logger.debug(\"Scanned pages dir\", this.pagesPathInfo);\n }\n\n async parsePage({ relative, absolute }: PagePathInfo): Promise<PageMeta> {\n const code = await fs.promises.readFile(absolute, {\n encoding: \"utf-8\",\n });\n const t = parse(code);\n const path = relative.replace(extname(relative), \"\");\n let pageMeta: PageMeta = {\n path,\n type: \"page\",\n };\n t?.children.forEach((v) => {\n if (v.type !== 1) {\n return;\n }\n if (v.tag === \"route\") {\n v.props.forEach((prop) => {\n if (prop.type === 6 && prop.name === \"type\") {\n pageMeta.type = prop.value?.content ?? pageMeta.type;\n }\n });\n const astContent = v.children?.[0];\n if (astContent && astContent.type === 2) {\n const _pageMeta = JSONParse(astContent.content);\n Object.keys(_pageMeta).forEach((key) => {\n pageMeta[key] = _pageMeta[key];\n });\n // overwrite path\n pageMeta[\"path\"] = path;\n }\n }\n });\n return pageMeta;\n }\n\n async mergePagesMeta() {\n const pagesMeta = await Promise.all(\n this.pagesPathInfo?.map(async (page) => await this.parsePage(page))\n );\n const pages = Object.values(defu({}, pagesMeta, this.pagesConfig.pages));\n // @ts-ignore\n pages.sort((a) => (a.type === \"home\" ? -1 : 0));\n // @ts-ignore\n this.pagesMeta = pages;\n logger.debug(\"merged pages\", this.pagesMeta);\n }\n\n async createOrUpdatePagesJSON() {\n const outputName = \"pages.json\";\n const resolvedOutput = normalizePath(\n resolve(process.cwd(), this.options.outDir, outputName)\n );\n\n // 如果不存在,先输出一个占位文件\n if (!fs.existsSync(resolvedOutput)) {\n fs.writeFileSync(resolvedOutput, `{\"pages\": [{\"path\": \"\"}]}`, {\n encoding: \"utf-8\",\n });\n }\n\n this.options.onBeforeLoadUserConfig(this);\n await this.loadUserPagesConfig();\n this.options.onAfterLoadUserConfig(this);\n\n this.options.onBeforeScanPages(this);\n await this.scanPages();\n this.options.onAfterScanPages(this);\n\n this.options.onBeforeMergePagesMeta(this);\n await this.mergePagesMeta();\n this.options.onAfterMergePagesMeta(this);\n\n this.options.onBeforeWriteFile(this);\n fs.writeFileSync(resolvedOutput, this.pagesJson, {\n encoding: \"utf-8\",\n });\n this.options.onAfterWriteFile(this);\n }\n\n async virtualModule() {\n return `export const pages = ${JSON.stringify(this.pagesMeta)};`;\n }\n\n async pagesConfigSourcePaths() {\n return await fg(\"pages.config.(ts|mts|cts|js|cjs|mjs|json)\", {\n deep: 0,\n onlyFiles: true,\n absolute: true,\n });\n }\n\n get pagesJson() {\n return JSON.stringify({\n ...this.pagesConfig,\n pages: this.pagesMeta,\n });\n }\n}\n","import { UserPagesConfig } from \"./types\";\nexport * from \"./types\";\nexport function definePages(config: UserPagesConfig) {\n return config;\n}\n"],"mappings":"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","names":["import_vite","consola","import_path","import_vite","fg","relative","fs","_a","JSONParse","module"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
interface PagesConfig {
|
|
4
|
+
pages: any;
|
|
5
|
+
globalStyle: any;
|
|
6
|
+
easycom: any;
|
|
7
|
+
tabBar: any;
|
|
8
|
+
condition: any;
|
|
9
|
+
subPackages: any;
|
|
10
|
+
preloadRule: any;
|
|
11
|
+
workers: any;
|
|
12
|
+
leftWindow: any;
|
|
13
|
+
topWindow: any;
|
|
14
|
+
rightWindow: any;
|
|
15
|
+
uniIdRouter: any;
|
|
16
|
+
}
|
|
17
|
+
interface UserPagesConfig extends Partial<PagesConfig> {
|
|
18
|
+
}
|
|
3
19
|
|
|
4
20
|
declare class Context {
|
|
5
21
|
options: ResolvedOptions;
|
|
@@ -56,6 +72,8 @@ interface PageMeta {
|
|
|
56
72
|
[x: string]: any;
|
|
57
73
|
}
|
|
58
74
|
|
|
75
|
+
declare function definePages(config: UserPagesConfig): UserPagesConfig;
|
|
76
|
+
|
|
59
77
|
declare const VitePluginUniPages: (userOptions?: UserOptions) => Promise<Plugin>;
|
|
60
78
|
|
|
61
|
-
export { VitePluginUniPages, VitePluginUniPages as default };
|
|
79
|
+
export { PagesConfig, UserPagesConfig, VitePluginUniPages, VitePluginUniPages as default, definePages };
|
package/dist/index.js
CHANGED
|
@@ -161,6 +161,11 @@ var Context = class {
|
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
+
// src/config/index.ts
|
|
165
|
+
function definePages(config) {
|
|
166
|
+
return config;
|
|
167
|
+
}
|
|
168
|
+
|
|
164
169
|
// src/index.ts
|
|
165
170
|
function resolveOptions(userOptions) {
|
|
166
171
|
return {
|
|
@@ -247,6 +252,7 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
247
252
|
var src_default = VitePluginUniPages;
|
|
248
253
|
export {
|
|
249
254
|
VitePluginUniPages,
|
|
250
|
-
src_default as default
|
|
255
|
+
src_default as default,
|
|
256
|
+
definePages
|
|
251
257
|
};
|
|
252
258
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/constant.ts","../src/context/index.ts"],"sourcesContent":["import { ModuleNode, normalizePath, Plugin } from \"vite\";\nimport { ResolvedOptions, UserOptions } from \"./types\";\nimport { isPagePath, logger } from \"./utils\";\nimport { virtualModuleId, resolvedVirtualModuleId } from \"./constant\";\nimport { Context } from \"./context\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n exclude: [],\n onBeforeLoadUserConfig: () => {},\n onAfterLoadUserConfig: () => {},\n onBeforeScanPages: () => {},\n onAfterScanPages: () => {},\n onBeforeMergePagesMeta: () => {},\n onAfterMergePagesMeta: () => {},\n onBeforeWriteFile: () => {},\n onAfterWriteFile: () => {},\n ...userOptions,\n };\n}\n\nexport const VitePluginUniPages = async (\n userOptions: UserOptions = {}\n): Promise<Plugin> => {\n const options = resolveOptions(userOptions);\n logger.debug(\"Create uni-pages context with\", options);\n const ctx = new Context(options);\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n async configureServer({ watcher, moduleGraph, ws }) {\n const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();\n logger.debug(\"Add watcher\", pagesConfigSourcePaths);\n watcher.add(pagesConfigSourcePaths);\n\n const reloadModule = (module: ModuleNode | undefined, path = \"*\") => {\n if (module) {\n moduleGraph.invalidateModule(module);\n if (ws) {\n ws.send({\n path,\n type: \"full-reload\",\n });\n }\n }\n };\n const updateVirtualModule = () => {\n logger.debug(\"Update virtualModule\");\n const module = moduleGraph.getModuleById(resolvedVirtualModuleId);\n reloadModule(module);\n };\n\n watcher.on(\"change\", async (path) => {\n if (\n pagesConfigSourcePaths.includes(normalizePath(path)) ||\n isPagePath(path, options)\n ) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"add\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"unlink\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n },\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return ctx.virtualModule();\n }\n },\n };\n};\n\nexport default VitePluginUniPages;\n","import { resolve } from \"path\";\nimport { ResolvedOptions } from \"./types\";\nimport { createFilter } from \"vite\";\nimport consola from \"consola\";\n\nexport const isPagePath = (path: string, options: ResolvedOptions) => {\n const dirPath = resolve(process.cwd(), options.pagesDir);\n const filter = createFilter(dirPath + \"/**/*.(vue|nvue)\", options.exclude);\n return filter(path);\n};\n\nexport const logger = consola.create({\n defaults: {\n tag: \"vite-plugin-uni-pages\",\n },\n});\n","export const virtualModuleId = \"virtual:uni-pages\";\nexport const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n","import { extname, join, relative, resolve } from \"path\";\nimport { loadConfig } from \"unconfig\";\nimport { normalizePath } from \"vite\";\nimport { PagesConfig } from \"../config/types\";\nimport { PageMeta, PagePathInfo, ResolvedOptions } from \"../types\";\nimport fg from \"fast-glob\";\nimport { parse as JSONParse } from \"jsonc-parser\";\nimport { parse } from \"@vue/compiler-dom\";\nimport fs from \"fs\";\nimport { defu } from \"defu\";\nimport { logger } from \"../utils\";\nexport class Context {\n options: ResolvedOptions;\n pagesConfig!: PagesConfig;\n pagesPathInfo: PagePathInfo[] = [];\n pagesMeta: PageMeta[] = [];\n constructor(options: ResolvedOptions) {\n this.options = options;\n this.createOrUpdatePagesJSON();\n }\n\n async loadUserPagesConfig() {\n const { config } = await loadConfig({\n sources: [\n {\n files: \"pages.config\",\n },\n ],\n merge: false,\n });\n if (!config) {\n logger.error(\n \"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)\"\n );\n process.exit(-1);\n }\n logger.debug(\"Loaded user pages config\", config);\n this.pagesConfig = config as PagesConfig;\n }\n\n async scanPages() {\n const files = await fg(\"**/*.(vue|nvue)\", {\n ignore: [\"node_modules\", \".git\", \"**/__*__/*\", ...this.options.exclude],\n onlyFiles: true,\n cwd: resolve(process.cwd(), this.options.pagesDir),\n });\n const basePath = relative(\n resolve(process.cwd(), this.options.outDir),\n this.options.pagesDir\n );\n this.pagesPathInfo = files.map((file) => {\n return {\n relative: normalizePath(join(basePath, file)),\n absolute: normalizePath(\n resolve(process.cwd(), this.options.pagesDir, file)\n ),\n };\n });\n logger.debug(\"Scanned pages dir\", this.pagesPathInfo);\n }\n\n async parsePage({ relative, absolute }: PagePathInfo): Promise<PageMeta> {\n const code = await fs.promises.readFile(absolute, {\n encoding: \"utf-8\",\n });\n const t = parse(code);\n const path = relative.replace(extname(relative), \"\");\n let pageMeta: PageMeta = {\n path,\n type: \"page\",\n };\n t?.children.forEach((v) => {\n if (v.type !== 1) {\n return;\n }\n if (v.tag === \"route\") {\n v.props.forEach((prop) => {\n if (prop.type === 6 && prop.name === \"type\") {\n pageMeta.type = prop.value?.content ?? pageMeta.type;\n }\n });\n const astContent = v.children?.[0];\n if (astContent && astContent.type === 2) {\n const _pageMeta = JSONParse(astContent.content);\n Object.keys(_pageMeta).forEach((key) => {\n pageMeta[key] = _pageMeta[key];\n });\n // overwrite path\n pageMeta[\"path\"] = path;\n }\n }\n });\n return pageMeta;\n }\n\n async mergePagesMeta() {\n const pagesMeta = await Promise.all(\n this.pagesPathInfo?.map(async (page) => await this.parsePage(page))\n );\n const pages = Object.values(defu({}, pagesMeta, this.pagesConfig.pages));\n // @ts-ignore\n pages.sort((a) => (a.type === \"home\" ? -1 : 0));\n // @ts-ignore\n this.pagesMeta = pages;\n logger.debug(\"merged pages\", this.pagesMeta);\n }\n\n async createOrUpdatePagesJSON() {\n const outputName = \"pages.json\";\n const resolvedOutput = normalizePath(\n resolve(process.cwd(), this.options.outDir, outputName)\n );\n\n // 如果不存在,先输出一个占位文件\n if (!fs.existsSync(resolvedOutput)) {\n fs.writeFileSync(resolvedOutput, `{\"pages\": [{\"path\": \"\"}]}`, {\n encoding: \"utf-8\",\n });\n }\n\n this.options.onBeforeLoadUserConfig(this);\n await this.loadUserPagesConfig();\n this.options.onAfterLoadUserConfig(this);\n\n this.options.onBeforeScanPages(this);\n await this.scanPages();\n this.options.onAfterScanPages(this);\n\n this.options.onBeforeMergePagesMeta(this);\n await this.mergePagesMeta();\n this.options.onAfterMergePagesMeta(this);\n\n this.options.onBeforeWriteFile(this);\n fs.writeFileSync(resolvedOutput, this.pagesJson, {\n encoding: \"utf-8\",\n });\n this.options.onAfterWriteFile(this);\n }\n\n async virtualModule() {\n return `export const pages = ${JSON.stringify(this.pagesMeta)};`;\n }\n\n async pagesConfigSourcePaths() {\n return await fg(\"pages.config.(ts|mts|cts|js|cjs|mjs|json)\", {\n deep: 0,\n onlyFiles: true,\n absolute: true,\n });\n }\n\n get pagesJson() {\n return JSON.stringify({\n ...this.pagesConfig,\n pages: this.pagesMeta,\n });\n }\n}\n"],"mappings":"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","names":["normalizePath","resolve","resolve","relative","_a","normalizePath"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/constant.ts","../src/context/index.ts","../src/config/index.ts"],"sourcesContent":["import { ModuleNode, normalizePath, Plugin } from \"vite\";\nimport { ResolvedOptions, UserOptions } from \"./types\";\nimport { isPagePath, logger } from \"./utils\";\nimport { virtualModuleId, resolvedVirtualModuleId } from \"./constant\";\nimport { Context } from \"./context\";\n\nexport * from \"./config\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n exclude: [],\n onBeforeLoadUserConfig: () => {},\n onAfterLoadUserConfig: () => {},\n onBeforeScanPages: () => {},\n onAfterScanPages: () => {},\n onBeforeMergePagesMeta: () => {},\n onAfterMergePagesMeta: () => {},\n onBeforeWriteFile: () => {},\n onAfterWriteFile: () => {},\n ...userOptions,\n };\n}\n\nexport const VitePluginUniPages = async (\n userOptions: UserOptions = {}\n): Promise<Plugin> => {\n const options = resolveOptions(userOptions);\n logger.debug(\"Create uni-pages context with\", options);\n const ctx = new Context(options);\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n async configureServer({ watcher, moduleGraph, ws }) {\n const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();\n logger.debug(\"Add watcher\", pagesConfigSourcePaths);\n watcher.add(pagesConfigSourcePaths);\n\n const reloadModule = (module: ModuleNode | undefined, path = \"*\") => {\n if (module) {\n moduleGraph.invalidateModule(module);\n if (ws) {\n ws.send({\n path,\n type: \"full-reload\",\n });\n }\n }\n };\n const updateVirtualModule = () => {\n logger.debug(\"Update virtualModule\");\n const module = moduleGraph.getModuleById(resolvedVirtualModuleId);\n reloadModule(module);\n };\n\n watcher.on(\"change\", async (path) => {\n if (\n pagesConfigSourcePaths.includes(normalizePath(path)) ||\n isPagePath(path, options)\n ) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"add\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n watcher.on(\"unlink\", async (path) => {\n if (isPagePath(path, options)) {\n await ctx.createOrUpdatePagesJSON();\n updateVirtualModule();\n }\n });\n },\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return ctx.virtualModule();\n }\n },\n };\n};\n\nexport default VitePluginUniPages;\n","import { resolve } from \"path\";\nimport { ResolvedOptions } from \"./types\";\nimport { createFilter } from \"vite\";\nimport consola from \"consola\";\n\nexport const isPagePath = (path: string, options: ResolvedOptions) => {\n const dirPath = resolve(process.cwd(), options.pagesDir);\n const filter = createFilter(dirPath + \"/**/*.(vue|nvue)\", options.exclude);\n return filter(path);\n};\n\nexport const logger = consola.create({\n defaults: {\n tag: \"vite-plugin-uni-pages\",\n },\n});\n","export const virtualModuleId = \"virtual:uni-pages\";\nexport const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n","import { extname, join, relative, resolve } from \"path\";\nimport { loadConfig } from \"unconfig\";\nimport { normalizePath } from \"vite\";\nimport { PagesConfig } from \"../config/types\";\nimport { PageMeta, PagePathInfo, ResolvedOptions } from \"../types\";\nimport fg from \"fast-glob\";\nimport { parse as JSONParse } from \"jsonc-parser\";\nimport { parse } from \"@vue/compiler-dom\";\nimport fs from \"fs\";\nimport { defu } from \"defu\";\nimport { logger } from \"../utils\";\nexport class Context {\n options: ResolvedOptions;\n pagesConfig!: PagesConfig;\n pagesPathInfo: PagePathInfo[] = [];\n pagesMeta: PageMeta[] = [];\n constructor(options: ResolvedOptions) {\n this.options = options;\n this.createOrUpdatePagesJSON();\n }\n\n async loadUserPagesConfig() {\n const { config } = await loadConfig({\n sources: [\n {\n files: \"pages.config\",\n },\n ],\n merge: false,\n });\n if (!config) {\n logger.error(\n \"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)\"\n );\n process.exit(-1);\n }\n logger.debug(\"Loaded user pages config\", config);\n this.pagesConfig = config as PagesConfig;\n }\n\n async scanPages() {\n const files = await fg(\"**/*.(vue|nvue)\", {\n ignore: [\"node_modules\", \".git\", \"**/__*__/*\", ...this.options.exclude],\n onlyFiles: true,\n cwd: resolve(process.cwd(), this.options.pagesDir),\n });\n const basePath = relative(\n resolve(process.cwd(), this.options.outDir),\n this.options.pagesDir\n );\n this.pagesPathInfo = files.map((file) => {\n return {\n relative: normalizePath(join(basePath, file)),\n absolute: normalizePath(\n resolve(process.cwd(), this.options.pagesDir, file)\n ),\n };\n });\n logger.debug(\"Scanned pages dir\", this.pagesPathInfo);\n }\n\n async parsePage({ relative, absolute }: PagePathInfo): Promise<PageMeta> {\n const code = await fs.promises.readFile(absolute, {\n encoding: \"utf-8\",\n });\n const t = parse(code);\n const path = relative.replace(extname(relative), \"\");\n let pageMeta: PageMeta = {\n path,\n type: \"page\",\n };\n t?.children.forEach((v) => {\n if (v.type !== 1) {\n return;\n }\n if (v.tag === \"route\") {\n v.props.forEach((prop) => {\n if (prop.type === 6 && prop.name === \"type\") {\n pageMeta.type = prop.value?.content ?? pageMeta.type;\n }\n });\n const astContent = v.children?.[0];\n if (astContent && astContent.type === 2) {\n const _pageMeta = JSONParse(astContent.content);\n Object.keys(_pageMeta).forEach((key) => {\n pageMeta[key] = _pageMeta[key];\n });\n // overwrite path\n pageMeta[\"path\"] = path;\n }\n }\n });\n return pageMeta;\n }\n\n async mergePagesMeta() {\n const pagesMeta = await Promise.all(\n this.pagesPathInfo?.map(async (page) => await this.parsePage(page))\n );\n const pages = Object.values(defu({}, pagesMeta, this.pagesConfig.pages));\n // @ts-ignore\n pages.sort((a) => (a.type === \"home\" ? -1 : 0));\n // @ts-ignore\n this.pagesMeta = pages;\n logger.debug(\"merged pages\", this.pagesMeta);\n }\n\n async createOrUpdatePagesJSON() {\n const outputName = \"pages.json\";\n const resolvedOutput = normalizePath(\n resolve(process.cwd(), this.options.outDir, outputName)\n );\n\n // 如果不存在,先输出一个占位文件\n if (!fs.existsSync(resolvedOutput)) {\n fs.writeFileSync(resolvedOutput, `{\"pages\": [{\"path\": \"\"}]}`, {\n encoding: \"utf-8\",\n });\n }\n\n this.options.onBeforeLoadUserConfig(this);\n await this.loadUserPagesConfig();\n this.options.onAfterLoadUserConfig(this);\n\n this.options.onBeforeScanPages(this);\n await this.scanPages();\n this.options.onAfterScanPages(this);\n\n this.options.onBeforeMergePagesMeta(this);\n await this.mergePagesMeta();\n this.options.onAfterMergePagesMeta(this);\n\n this.options.onBeforeWriteFile(this);\n fs.writeFileSync(resolvedOutput, this.pagesJson, {\n encoding: \"utf-8\",\n });\n this.options.onAfterWriteFile(this);\n }\n\n async virtualModule() {\n return `export const pages = ${JSON.stringify(this.pagesMeta)};`;\n }\n\n async pagesConfigSourcePaths() {\n return await fg(\"pages.config.(ts|mts|cts|js|cjs|mjs|json)\", {\n deep: 0,\n onlyFiles: true,\n absolute: true,\n });\n }\n\n get pagesJson() {\n return JSON.stringify({\n ...this.pagesConfig,\n pages: this.pagesMeta,\n });\n }\n}\n","import { UserPagesConfig } from \"./types\";\nexport * from \"./types\";\nexport function definePages(config: UserPagesConfig) {\n return config;\n}\n"],"mappings":"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","names":["normalizePath","resolve","resolve","relative","_a","normalizePath"]}
|
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.0.
|
|
4
|
+
"version": "0.0.5",
|
|
5
5
|
"packageManager": "pnpm@7.16.0",
|
|
6
6
|
"description": "File system based routing for uni-app applications using Vite",
|
|
7
7
|
"author": "KeJun",
|
|
@@ -20,11 +20,6 @@
|
|
|
20
20
|
"require": "./dist/index.cjs",
|
|
21
21
|
"import": "./dist/index.js"
|
|
22
22
|
},
|
|
23
|
-
"./config": {
|
|
24
|
-
"types": "./dist/config/index.d.ts",
|
|
25
|
-
"require": "./dist/config/index.cjs",
|
|
26
|
-
"import": "./dist/config/index.js"
|
|
27
|
-
},
|
|
28
23
|
"./client": {
|
|
29
24
|
"types": "./client.d.ts"
|
|
30
25
|
}
|
|
@@ -35,10 +30,8 @@
|
|
|
35
30
|
"typesVersions": {
|
|
36
31
|
"*": {
|
|
37
32
|
"*": [
|
|
33
|
+
"./dist/*",
|
|
38
34
|
"./dist/index.d.ts"
|
|
39
|
-
],
|
|
40
|
-
"config": [
|
|
41
|
-
"./dist/config/index.d.ts"
|
|
42
35
|
]
|
|
43
36
|
}
|
|
44
37
|
},
|
package/dist/config/index.cjs
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/config/index.ts
|
|
21
|
-
var config_exports = {};
|
|
22
|
-
__export(config_exports, {
|
|
23
|
-
definePages: () => definePages
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(config_exports);
|
|
26
|
-
function definePages(config) {
|
|
27
|
-
return config;
|
|
28
|
-
}
|
|
29
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
-
0 && (module.exports = {
|
|
31
|
-
definePages
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"sourcesContent":["import { UserPagesConfig } from \"./types\";\nexport function definePages(config: UserPagesConfig) {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,YAAY,QAAyB;AACnD,SAAO;AACT;","names":[]}
|
package/dist/config/index.d.ts
DELETED
package/dist/config/index.js
DELETED
package/dist/config/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"sourcesContent":["import { UserPagesConfig } from \"./types\";\nexport function definePages(config: UserPagesConfig) {\n return config;\n}\n"],"mappings":";AACO,SAAS,YAAY,QAAyB;AACnD,SAAO;AACT;","names":[]}
|
package/dist/types-7dcfd17b.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
interface PagesConfig {
|
|
2
|
-
pages: any;
|
|
3
|
-
globalStyle: any;
|
|
4
|
-
easycom: any;
|
|
5
|
-
tabBar: any;
|
|
6
|
-
condition: any;
|
|
7
|
-
subPackages: any;
|
|
8
|
-
preloadRule: any;
|
|
9
|
-
workers: any;
|
|
10
|
-
leftWindow: any;
|
|
11
|
-
topWindow: any;
|
|
12
|
-
rightWindow: any;
|
|
13
|
-
uniIdRouter: any;
|
|
14
|
-
}
|
|
15
|
-
interface UserPagesConfig extends Partial<PagesConfig> {
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { PagesConfig as P, UserPagesConfig as U };
|