@uni-helper/vite-plugin-uni-pages 0.0.3 → 0.0.4
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 +2 -2
- package/README.md +2 -2
- package/dist/config/index.cjs.map +1 -1
- package/dist/config/index.d.ts +2 -17
- package/dist/config/index.js.map +1 -1
- package/dist/index.cjs +23 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -11
- package/dist/index.js +22 -27
- package/dist/index.js.map +1 -1
- package/dist/types-7dcfd17b.d.ts +18 -0
- package/package.json +15 -5
package/README.Zh-CN.md
CHANGED
|
@@ -23,7 +23,7 @@ export default defineConfig({
|
|
|
23
23
|
});
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
在 `pages.config.ts` 定义全局属性
|
|
26
|
+
在 `pages.config.(ts|mts|cts|js|cjs|mjs|json)` 定义全局属性
|
|
27
27
|
|
|
28
28
|
```ts
|
|
29
29
|
// pages.config.ts
|
|
@@ -89,6 +89,6 @@ UniPages({
|
|
|
89
89
|
...
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
这是条件编译的一个很好的替代方案, 你还可以在 `vite.config.ts` 中使用 `exclude` 来排除部分页面。
|
|
93
93
|
|
|
94
94
|
怎么做? 打印 `process.env` 然后找到 `UNI_*`, 我相信你已经会了
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ export default defineConfig({
|
|
|
23
23
|
});
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Define global properties in `pages.config.ts`
|
|
26
|
+
Define global properties in `pages.config.(ts|mts|cts|js|cjs|mjs|json)`
|
|
27
27
|
|
|
28
28
|
```ts
|
|
29
29
|
// pages.config.ts
|
|
@@ -89,7 +89,7 @@ UniPages({
|
|
|
89
89
|
...
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
This is a good alternative to conditional compilation
|
|
92
|
+
This is a good alternative to conditional compilation, you can also use `exclude` in `vite.config.ts`
|
|
93
93
|
|
|
94
94
|
How? console the `process.env` and found `UNI_*`, you can do this!
|
|
95
95
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"sourcesContent":["import { UserPagesConfig } from \"./types\";\nexport
|
|
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
CHANGED
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
|
|
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
|
-
}
|
|
1
|
+
import { U as UserPagesConfig } from '../types-7dcfd17b.js';
|
|
17
2
|
|
|
18
3
|
declare function definePages(config: UserPagesConfig): UserPagesConfig;
|
|
19
4
|
|
|
20
|
-
export {
|
|
5
|
+
export { definePages };
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"sourcesContent":["import { UserPagesConfig } from \"./types\";\nexport
|
|
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/index.cjs
CHANGED
|
@@ -27,8 +27,7 @@ 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
|
|
31
|
-
definePages: () => definePages
|
|
30
|
+
default: () => src_default
|
|
32
31
|
});
|
|
33
32
|
module.exports = __toCommonJS(src_exports);
|
|
34
33
|
var import_vite3 = require("vite");
|
|
@@ -39,7 +38,7 @@ var import_vite = require("vite");
|
|
|
39
38
|
var import_consola = __toESM(require("consola"), 1);
|
|
40
39
|
var isPagePath = (path, options) => {
|
|
41
40
|
const dirPath = (0, import_path.resolve)(process.cwd(), options.pagesDir);
|
|
42
|
-
const filter = (0, import_vite.createFilter)(dirPath + "/**/*.(vue|nvue)");
|
|
41
|
+
const filter = (0, import_vite.createFilter)(dirPath + "/**/*.(vue|nvue)", options.exclude);
|
|
43
42
|
return filter(path);
|
|
44
43
|
};
|
|
45
44
|
var logger = import_consola.default.create({
|
|
@@ -72,18 +71,23 @@ var Context = class {
|
|
|
72
71
|
const { config } = await (0, import_unconfig.loadConfig)({
|
|
73
72
|
sources: [
|
|
74
73
|
{
|
|
75
|
-
files:
|
|
76
|
-
extensions: [this.options.extension]
|
|
74
|
+
files: "pages.config"
|
|
77
75
|
}
|
|
78
76
|
],
|
|
79
77
|
merge: false
|
|
80
78
|
});
|
|
79
|
+
if (!config) {
|
|
80
|
+
logger.error(
|
|
81
|
+
"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)"
|
|
82
|
+
);
|
|
83
|
+
process.exit(-1);
|
|
84
|
+
}
|
|
81
85
|
logger.debug("Loaded user pages config", config);
|
|
82
86
|
this.pagesConfig = config;
|
|
83
87
|
}
|
|
84
88
|
async scanPages() {
|
|
85
89
|
const files = await (0, import_fast_glob.default)("**/*.(vue|nvue)", {
|
|
86
|
-
ignore: ["node_modules", ".git", "**/__*__/*"],
|
|
90
|
+
ignore: ["node_modules", ".git", "**/__*__/*", ...this.options.exclude],
|
|
87
91
|
onlyFiles: true,
|
|
88
92
|
cwd: (0, import_path2.resolve)(process.cwd(), this.options.pagesDir)
|
|
89
93
|
});
|
|
@@ -173,10 +177,12 @@ var Context = class {
|
|
|
173
177
|
async virtualModule() {
|
|
174
178
|
return `export const pages = ${JSON.stringify(this.pagesMeta)};`;
|
|
175
179
|
}
|
|
176
|
-
|
|
177
|
-
return (0,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
+
async pagesConfigSourcePaths() {
|
|
181
|
+
return await (0, import_fast_glob.default)("pages.config.(ts|mts|cts|js|cjs|mjs|json)", {
|
|
182
|
+
deep: 0,
|
|
183
|
+
onlyFiles: true,
|
|
184
|
+
absolute: true
|
|
185
|
+
});
|
|
180
186
|
}
|
|
181
187
|
get pagesJson() {
|
|
182
188
|
return JSON.stringify({
|
|
@@ -186,21 +192,12 @@ var Context = class {
|
|
|
186
192
|
}
|
|
187
193
|
};
|
|
188
194
|
|
|
189
|
-
// src/index.ts
|
|
190
|
-
var import_fs2 = require("fs");
|
|
191
|
-
|
|
192
|
-
// src/config/index.ts
|
|
193
|
-
function definePages(config) {
|
|
194
|
-
return config;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
195
|
// src/index.ts
|
|
198
196
|
function resolveOptions(userOptions) {
|
|
199
197
|
return {
|
|
200
198
|
pagesDir: "src/pages",
|
|
201
199
|
outDir: "src",
|
|
202
|
-
|
|
203
|
-
extension: "ts",
|
|
200
|
+
exclude: [],
|
|
204
201
|
onBeforeLoadUserConfig: () => {
|
|
205
202
|
},
|
|
206
203
|
onAfterLoadUserConfig: () => {
|
|
@@ -224,15 +221,13 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
224
221
|
const options = resolveOptions(userOptions);
|
|
225
222
|
logger.debug("Create uni-pages context with", options);
|
|
226
223
|
const ctx = new Context(options);
|
|
227
|
-
if (!(0, import_fs2.existsSync)(ctx.pagesConfigSourcePath)) {
|
|
228
|
-
logger.error(`Can't found ${options.entry}.${options.extension}`);
|
|
229
|
-
}
|
|
230
224
|
return {
|
|
231
225
|
name: "vite-plugin-uni-pages",
|
|
232
226
|
enforce: "pre",
|
|
233
|
-
configureServer({ watcher, moduleGraph, ws }) {
|
|
234
|
-
|
|
235
|
-
|
|
227
|
+
async configureServer({ watcher, moduleGraph, ws }) {
|
|
228
|
+
const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();
|
|
229
|
+
logger.debug("Add watcher", pagesConfigSourcePaths);
|
|
230
|
+
watcher.add(pagesConfigSourcePaths);
|
|
236
231
|
const reloadModule = (module2, path = "*") => {
|
|
237
232
|
if (module2) {
|
|
238
233
|
moduleGraph.invalidateModule(module2);
|
|
@@ -250,7 +245,7 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
250
245
|
reloadModule(module2);
|
|
251
246
|
};
|
|
252
247
|
watcher.on("change", async (path) => {
|
|
253
|
-
if ((0, import_vite3.normalizePath)(path)
|
|
248
|
+
if (pagesConfigSourcePaths.includes((0, import_vite3.normalizePath)(path)) || isPagePath(path, options)) {
|
|
254
249
|
await ctx.createOrUpdatePagesJSON();
|
|
255
250
|
updateVirtualModule();
|
|
256
251
|
}
|
|
@@ -283,7 +278,6 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
283
278
|
var src_default = VitePluginUniPages;
|
|
284
279
|
// Annotate the CommonJS export names for ESM import in node:
|
|
285
280
|
0 && (module.exports = {
|
|
286
|
-
VitePluginUniPages
|
|
287
|
-
definePages
|
|
281
|
+
VitePluginUniPages
|
|
288
282
|
});
|
|
289
283
|
//# 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","../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\";\nimport { existsSync } from \"fs\";\n\nexport * from \"./config\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n entry: \"pages.config\",\n extension: \"ts\",\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 if (!existsSync(ctx.pagesConfigSourcePath)) {\n logger.error(`Can't found ${options.entry}.${options.extension}`);\n }\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n configureServer({ watcher, moduleGraph, ws }) {\n logger.debug(\"Add watcher\", ctx.pagesConfigSourcePath);\n watcher.add(ctx.pagesConfigSourcePath);\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 normalizePath(path) === ctx.pagesConfigSourcePath ||\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)\");\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\";\n\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: this.options.entry,\n extensions: [this.options.extension],\n },\n ],\n merge: false,\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\", \"**/__*__/*\"],\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 get pagesConfigSourcePath() {\n return normalizePath(\n resolve(process.cwd(), `${this.options.entry}.${this.options.extension}`)\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","import_fs","module"]}
|
|
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"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
|
-
import { PagesConfig } from './
|
|
3
|
-
export { PagesConfig, UserPagesConfig, definePages } from './config/index.js';
|
|
2
|
+
import { P as PagesConfig } from './types-7dcfd17b.js';
|
|
4
3
|
|
|
5
4
|
declare class Context {
|
|
6
5
|
options: ResolvedOptions;
|
|
@@ -14,7 +13,7 @@ declare class Context {
|
|
|
14
13
|
mergePagesMeta(): Promise<void>;
|
|
15
14
|
createOrUpdatePagesJSON(): Promise<void>;
|
|
16
15
|
virtualModule(): Promise<string>;
|
|
17
|
-
|
|
16
|
+
pagesConfigSourcePaths(): Promise<string[]>;
|
|
18
17
|
get pagesJson(): string;
|
|
19
18
|
}
|
|
20
19
|
|
|
@@ -30,15 +29,10 @@ interface Options {
|
|
|
30
29
|
*/
|
|
31
30
|
outDir: string;
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @default
|
|
32
|
+
* exclude page
|
|
33
|
+
* @default []
|
|
35
34
|
*/
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* pages config extension
|
|
39
|
-
* @default "ts"
|
|
40
|
-
*/
|
|
41
|
-
extension: string;
|
|
35
|
+
exclude: string[];
|
|
42
36
|
onBeforeLoadUserConfig: (ctx: Context) => void;
|
|
43
37
|
onAfterLoadUserConfig: (ctx: Context) => void;
|
|
44
38
|
onBeforeScanPages: (ctx: Context) => void;
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createFilter } from "vite";
|
|
|
7
7
|
import consola from "consola";
|
|
8
8
|
var isPagePath = (path, options) => {
|
|
9
9
|
const dirPath = resolve(process.cwd(), options.pagesDir);
|
|
10
|
-
const filter = createFilter(dirPath + "/**/*.(vue|nvue)");
|
|
10
|
+
const filter = createFilter(dirPath + "/**/*.(vue|nvue)", options.exclude);
|
|
11
11
|
return filter(path);
|
|
12
12
|
};
|
|
13
13
|
var logger = consola.create({
|
|
@@ -40,18 +40,23 @@ var Context = class {
|
|
|
40
40
|
const { config } = await loadConfig({
|
|
41
41
|
sources: [
|
|
42
42
|
{
|
|
43
|
-
files:
|
|
44
|
-
extensions: [this.options.extension]
|
|
43
|
+
files: "pages.config"
|
|
45
44
|
}
|
|
46
45
|
],
|
|
47
46
|
merge: false
|
|
48
47
|
});
|
|
48
|
+
if (!config) {
|
|
49
|
+
logger.error(
|
|
50
|
+
"Can't found pages.config, please create pages.config.(ts|mts|cts|js|cjs|mjs|json)"
|
|
51
|
+
);
|
|
52
|
+
process.exit(-1);
|
|
53
|
+
}
|
|
49
54
|
logger.debug("Loaded user pages config", config);
|
|
50
55
|
this.pagesConfig = config;
|
|
51
56
|
}
|
|
52
57
|
async scanPages() {
|
|
53
58
|
const files = await fg("**/*.(vue|nvue)", {
|
|
54
|
-
ignore: ["node_modules", ".git", "**/__*__/*"],
|
|
59
|
+
ignore: ["node_modules", ".git", "**/__*__/*", ...this.options.exclude],
|
|
55
60
|
onlyFiles: true,
|
|
56
61
|
cwd: resolve2(process.cwd(), this.options.pagesDir)
|
|
57
62
|
});
|
|
@@ -141,10 +146,12 @@ var Context = class {
|
|
|
141
146
|
async virtualModule() {
|
|
142
147
|
return `export const pages = ${JSON.stringify(this.pagesMeta)};`;
|
|
143
148
|
}
|
|
144
|
-
|
|
145
|
-
return
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
async pagesConfigSourcePaths() {
|
|
150
|
+
return await fg("pages.config.(ts|mts|cts|js|cjs|mjs|json)", {
|
|
151
|
+
deep: 0,
|
|
152
|
+
onlyFiles: true,
|
|
153
|
+
absolute: true
|
|
154
|
+
});
|
|
148
155
|
}
|
|
149
156
|
get pagesJson() {
|
|
150
157
|
return JSON.stringify({
|
|
@@ -154,21 +161,12 @@ var Context = class {
|
|
|
154
161
|
}
|
|
155
162
|
};
|
|
156
163
|
|
|
157
|
-
// src/index.ts
|
|
158
|
-
import { existsSync } from "fs";
|
|
159
|
-
|
|
160
|
-
// src/config/index.ts
|
|
161
|
-
function definePages(config) {
|
|
162
|
-
return config;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
164
|
// src/index.ts
|
|
166
165
|
function resolveOptions(userOptions) {
|
|
167
166
|
return {
|
|
168
167
|
pagesDir: "src/pages",
|
|
169
168
|
outDir: "src",
|
|
170
|
-
|
|
171
|
-
extension: "ts",
|
|
169
|
+
exclude: [],
|
|
172
170
|
onBeforeLoadUserConfig: () => {
|
|
173
171
|
},
|
|
174
172
|
onAfterLoadUserConfig: () => {
|
|
@@ -192,15 +190,13 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
192
190
|
const options = resolveOptions(userOptions);
|
|
193
191
|
logger.debug("Create uni-pages context with", options);
|
|
194
192
|
const ctx = new Context(options);
|
|
195
|
-
if (!existsSync(ctx.pagesConfigSourcePath)) {
|
|
196
|
-
logger.error(`Can't found ${options.entry}.${options.extension}`);
|
|
197
|
-
}
|
|
198
193
|
return {
|
|
199
194
|
name: "vite-plugin-uni-pages",
|
|
200
195
|
enforce: "pre",
|
|
201
|
-
configureServer({ watcher, moduleGraph, ws }) {
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
async configureServer({ watcher, moduleGraph, ws }) {
|
|
197
|
+
const pagesConfigSourcePaths = await ctx.pagesConfigSourcePaths();
|
|
198
|
+
logger.debug("Add watcher", pagesConfigSourcePaths);
|
|
199
|
+
watcher.add(pagesConfigSourcePaths);
|
|
204
200
|
const reloadModule = (module, path = "*") => {
|
|
205
201
|
if (module) {
|
|
206
202
|
moduleGraph.invalidateModule(module);
|
|
@@ -218,7 +214,7 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
218
214
|
reloadModule(module);
|
|
219
215
|
};
|
|
220
216
|
watcher.on("change", async (path) => {
|
|
221
|
-
if (normalizePath2(path)
|
|
217
|
+
if (pagesConfigSourcePaths.includes(normalizePath2(path)) || isPagePath(path, options)) {
|
|
222
218
|
await ctx.createOrUpdatePagesJSON();
|
|
223
219
|
updateVirtualModule();
|
|
224
220
|
}
|
|
@@ -251,7 +247,6 @@ var VitePluginUniPages = async (userOptions = {}) => {
|
|
|
251
247
|
var src_default = VitePluginUniPages;
|
|
252
248
|
export {
|
|
253
249
|
VitePluginUniPages,
|
|
254
|
-
src_default as default
|
|
255
|
-
definePages
|
|
250
|
+
src_default as default
|
|
256
251
|
};
|
|
257
252
|
//# 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","../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\";\nimport { existsSync } from \"fs\";\n\nexport * from \"./config\";\n\nfunction resolveOptions(userOptions: UserOptions): ResolvedOptions {\n return {\n pagesDir: \"src/pages\",\n outDir: \"src\",\n entry: \"pages.config\",\n extension: \"ts\",\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 if (!existsSync(ctx.pagesConfigSourcePath)) {\n logger.error(`Can't found ${options.entry}.${options.extension}`);\n }\n return {\n name: \"vite-plugin-uni-pages\",\n enforce: \"pre\",\n configureServer({ watcher, moduleGraph, ws }) {\n logger.debug(\"Add watcher\", ctx.pagesConfigSourcePath);\n watcher.add(ctx.pagesConfigSourcePath);\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 normalizePath(path) === ctx.pagesConfigSourcePath ||\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)\");\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\";\n\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: this.options.entry,\n extensions: [this.options.extension],\n },\n ],\n merge: false,\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\", \"**/__*__/*\"],\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 get pagesConfigSourcePath() {\n return normalizePath(\n resolve(process.cwd(), `${this.options.entry}.${this.options.extension}`)\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"]}
|
|
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"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 };
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uni-helper/vite-plugin-uni-pages",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
5
|
-
"packageManager": "pnpm@7.
|
|
4
|
+
"version": "0.0.4",
|
|
5
|
+
"packageManager": "pnpm@7.16.0",
|
|
6
6
|
"description": "File system based routing for uni-app applications using Vite",
|
|
7
7
|
"author": "KeJun",
|
|
8
8
|
"license": "MIT",
|
|
@@ -32,6 +32,16 @@
|
|
|
32
32
|
"main": "./dist/index.mjs",
|
|
33
33
|
"module": "./dist/index.js",
|
|
34
34
|
"types": "./dist/index.d.ts",
|
|
35
|
+
"typesVersions": {
|
|
36
|
+
"*": {
|
|
37
|
+
"*": [
|
|
38
|
+
"./dist/index.d.ts"
|
|
39
|
+
],
|
|
40
|
+
"config": [
|
|
41
|
+
"./dist/config/index.d.ts"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
},
|
|
35
45
|
"files": [
|
|
36
46
|
"dist",
|
|
37
47
|
"client.d.ts"
|
|
@@ -48,14 +58,14 @@
|
|
|
48
58
|
"@types/node": "^18.11.9",
|
|
49
59
|
"bumpp": "^8.2.1",
|
|
50
60
|
"tsup": "^6.5.0",
|
|
51
|
-
"typescript": "^4.
|
|
52
|
-
"vite": "^3.2.
|
|
61
|
+
"typescript": "^4.9.3",
|
|
62
|
+
"vite": "^3.2.4"
|
|
53
63
|
},
|
|
54
64
|
"dependencies": {
|
|
55
65
|
"@vue/compiler-dom": "^3.2.45",
|
|
56
66
|
"colorette": "^2.0.19",
|
|
57
67
|
"consola": "^2.15.3",
|
|
58
|
-
"defu": "^6.1.
|
|
68
|
+
"defu": "^6.1.1",
|
|
59
69
|
"fast-glob": "^3.2.12",
|
|
60
70
|
"jsonc-parser": "^3.2.0",
|
|
61
71
|
"unconfig": "^0.3.7"
|