@lingxia/cli 0.0.9 → 0.1.1
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/bin/lingxia.js +207 -32
- package/dist/builder/commands/build.d.ts +1 -1
- package/dist/builder/commands/build.d.ts.map +1 -1
- package/dist/builder/commands/build.js +138 -103
- package/dist/builder/commands/build.js.map +1 -1
- package/dist/builder/core/builders/logic.d.ts +3 -3
- package/dist/builder/core/builders/logic.d.ts.map +1 -1
- package/dist/builder/core/builders/logic.js +55 -46
- package/dist/builder/core/builders/logic.js.map +1 -1
- package/dist/builder/core/builders/page-functions.d.ts.map +1 -1
- package/dist/builder/core/builders/page-functions.js +43 -35
- package/dist/builder/core/builders/page-functions.js.map +1 -1
- package/dist/builder/core/builders/page-path-injector.js +27 -27
- package/dist/builder/core/builders/page-path-injector.js.map +1 -1
- package/dist/builder/core/builders/page-types.d.ts +22 -0
- package/dist/builder/core/builders/page-types.d.ts.map +1 -0
- package/dist/builder/core/builders/page-types.js +374 -0
- package/dist/builder/core/builders/page-types.js.map +1 -0
- package/dist/builder/core/builders/page.d.ts +5 -4
- package/dist/builder/core/builders/page.d.ts.map +1 -1
- package/dist/builder/core/builders/page.js +54 -52
- package/dist/builder/core/builders/page.js.map +1 -1
- package/dist/builder/core/builders/view-validator.d.ts +9 -0
- package/dist/builder/core/builders/view-validator.d.ts.map +1 -0
- package/dist/builder/core/builders/view-validator.js +58 -0
- package/dist/builder/core/builders/view-validator.js.map +1 -0
- package/dist/builder/core/builders/view.d.ts +40 -3
- package/dist/builder/core/builders/view.d.ts.map +1 -1
- package/dist/builder/core/builders/view.js +406 -55
- package/dist/builder/core/builders/view.js.map +1 -1
- package/dist/builder/core/config/alias-config.d.ts +1 -1
- package/dist/builder/core/config/alias-config.d.ts.map +1 -1
- package/dist/builder/core/config/alias-config.js +8 -8
- package/dist/builder/core/config/alias-config.js.map +1 -1
- package/dist/builder/core/config/framework.d.ts +1 -1
- package/dist/builder/core/config/framework.d.ts.map +1 -1
- package/dist/builder/core/config/framework.js +14 -11
- package/dist/builder/core/config/framework.js.map +1 -1
- package/dist/builder/core/config/lxapp-config.d.ts +74 -0
- package/dist/builder/core/config/lxapp-config.d.ts.map +1 -0
- package/dist/builder/core/config/lxapp-config.js +195 -0
- package/dist/builder/core/config/lxapp-config.js.map +1 -0
- package/dist/builder/core/config/view-build-schema.d.ts +2 -2
- package/dist/builder/core/config/view-config.d.ts +3 -3
- package/dist/builder/core/config/view-config.d.ts.map +1 -1
- package/dist/builder/core/config/view-config.js +16 -16
- package/dist/builder/core/config/view-config.js.map +1 -1
- package/dist/builder/core/config.d.ts +1 -1
- package/dist/builder/core/config.js +11 -11
- package/dist/builder/core/constants/source-dirs.d.ts +1 -1
- package/dist/builder/core/constants/source-dirs.js +9 -9
- package/dist/builder/core/constants/source-dirs.js.map +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts.map +1 -1
- package/dist/builder/core/constants/static-dirs.js +11 -11
- package/dist/builder/core/constants/static-dirs.js.map +1 -1
- package/dist/builder/core/frameworks/base.d.ts +1 -1
- package/dist/builder/core/frameworks/base.d.ts.map +1 -1
- package/dist/builder/core/frameworks/base.js +13 -11
- package/dist/builder/core/frameworks/base.js.map +1 -1
- package/dist/builder/core/frameworks/factory.d.ts +1 -1
- package/dist/builder/core/frameworks/factory.d.ts.map +1 -1
- package/dist/builder/core/frameworks/factory.js +9 -9
- package/dist/builder/core/frameworks/factory.js.map +1 -1
- package/dist/builder/core/frameworks/html.d.ts +2 -2
- package/dist/builder/core/frameworks/html.d.ts.map +1 -1
- package/dist/builder/core/frameworks/html.js +10 -10
- package/dist/builder/core/frameworks/html.js.map +1 -1
- package/dist/builder/core/frameworks/react.d.ts +3 -3
- package/dist/builder/core/frameworks/react.d.ts.map +1 -1
- package/dist/builder/core/frameworks/react.js +45 -43
- package/dist/builder/core/frameworks/react.js.map +1 -1
- package/dist/builder/core/frameworks/templates.d.ts +1 -1
- package/dist/builder/core/frameworks/templates.d.ts.map +1 -1
- package/dist/builder/core/frameworks/templates.js +1 -1
- package/dist/builder/core/frameworks/templates.js.map +1 -1
- package/dist/builder/core/frameworks/vue.d.ts +3 -3
- package/dist/builder/core/frameworks/vue.d.ts.map +1 -1
- package/dist/builder/core/frameworks/vue.js +48 -43
- package/dist/builder/core/frameworks/vue.js.map +1 -1
- package/dist/builder/core/registry.d.ts.map +1 -1
- package/dist/builder/core/registry.js +34 -25
- package/dist/builder/core/registry.js.map +1 -1
- package/dist/builder/core/template.d.ts +1 -1
- package/dist/builder/core/template.d.ts.map +1 -1
- package/dist/builder/core/template.js +19 -14
- package/dist/builder/core/template.js.map +1 -1
- package/dist/builder/core/templates/embedded.d.ts +3 -3
- package/dist/builder/core/templates/embedded.d.ts.map +1 -1
- package/dist/builder/core/templates/embedded.js +62 -31
- package/dist/builder/core/templates/embedded.js.map +1 -1
- package/dist/builder/core/type-generator.d.ts +17 -0
- package/dist/builder/core/type-generator.d.ts.map +1 -0
- package/dist/builder/core/type-generator.js +172 -0
- package/dist/builder/core/type-generator.js.map +1 -0
- package/dist/builder/core/utils/file.js +4 -4
- package/dist/builder/core/utils/incremental.d.ts +59 -0
- package/dist/builder/core/utils/incremental.d.ts.map +1 -0
- package/dist/builder/core/utils/incremental.js +177 -0
- package/dist/builder/core/utils/incremental.js.map +1 -0
- package/dist/builder/core/utils/page.d.ts +12 -2
- package/dist/builder/core/utils/page.d.ts.map +1 -1
- package/dist/builder/core/utils/page.js +63 -8
- package/dist/builder/core/utils/page.js.map +1 -1
- package/dist/builder/index.d.ts +1 -1
- package/dist/builder/index.js +1 -1
- package/dist/builder/types/index.d.ts +7 -6
- package/dist/builder/types/index.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -16
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
- package/templates/AppIcon.png +0 -0
- package/templates/android-native/app/src/main/java/MainActivity.kt +2 -2
- package/templates/android-native/app/src/main/res/values/strings.xml +1 -1
- package/templates/android-native/settings.gradle.kts +4 -0
- package/templates/harmony-native/AppScope/app.json5 +10 -0
- package/templates/harmony-native/AppScope/resources/base/element/string.json +8 -0
- package/templates/harmony-native/build-profile.json5 +41 -0
- package/templates/harmony-native/entry/build-profile.json5 +8 -0
- package/templates/harmony-native/entry/hvigorfile.ts +6 -0
- package/templates/harmony-native/entry/oh-package.json5 +11 -0
- package/templates/harmony-native/entry/src/main/ets/entryability/EntryAbility.ets +38 -0
- package/templates/harmony-native/entry/src/main/ets/pages/Index.ets +15 -0
- package/templates/harmony-native/entry/src/main/module.json5 +38 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/color.json +8 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/string.json +16 -0
- package/templates/harmony-native/entry/src/main/resources/base/profile/main_pages.json +5 -0
- package/templates/harmony-native/entry/src/main/resources/dark/element/color.json +8 -0
- package/templates/harmony-native/hvigor/hvigor-config.json5 +13 -0
- package/templates/harmony-native/hvigorfile.ts +6 -0
- package/templates/harmony-native/oh-package.json5 +10 -0
- package/templates/ios-native/App.entitlements +10 -0
- package/templates/ios-native/Info.plist +8 -0
- package/templates/ios-native/Package.swift +31 -0
- package/templates/ios-native/Sources/App.swift +44 -0
- package/templates/lxapp-create/html/global.d.ts +1 -0
- package/templates/lxapp-create/html/lxapp.config.ts +5 -0
- package/templates/lxapp-create/html/lxapp.json +8 -0
- package/templates/lxapp-create/html/lxapp.ts +8 -0
- package/templates/lxapp-create/html/package.json +20 -0
- package/templates/lxapp-create/html/pages/home/index.html +32 -0
- package/templates/lxapp-create/html/pages/home/index.json +3 -0
- package/templates/lxapp-create/html/pages/home/index.ts +14 -0
- package/templates/lxapp-create/html/tsconfig.json +13 -0
- package/templates/lxapp-create/html/view/home.ts +19 -0
- package/templates/lxapp-create/react/app.css +20 -0
- package/templates/lxapp-create/react/lxapp.config.ts +8 -0
- package/templates/lxapp-create/react/lxapp.json +1 -1
- package/templates/lxapp-create/react/package.json +2 -0
- package/templates/lxapp-create/react/pages/home/index.json +1 -1
- package/templates/lxapp-create/react/pages/home/index.ts +8 -3
- package/templates/lxapp-create/react/pages/home/index.tsx +113 -42
- package/templates/lxapp-create/react/tsconfig.json +5 -2
- package/templates/lxapp-create/vue/app.css +20 -0
- package/templates/lxapp-create/vue/lxapp.config.ts +8 -0
- package/templates/lxapp-create/vue/lxapp.json +1 -1
- package/templates/lxapp-create/vue/package.json +2 -0
- package/templates/lxapp-create/vue/pages/home/index.json +1 -1
- package/templates/lxapp-create/vue/pages/home/index.ts +8 -3
- package/templates/lxapp-create/vue/pages/home/index.vue +124 -37
- package/templates/lxapp-create/vue/tsconfig.json +5 -2
- package/templates/macos-native/Info.plist +40 -0
- package/templates/macos-native/Package.swift +30 -0
- package/templates/macos-native/Sources/main.swift +23 -0
- package/templates/rust-lib/Cargo.toml +16 -1
- package/templates/rust-lib/README.md +1 -1
- package/templates/rust-lib/src/lib.rs +39 -1
- package/vendor/lingxia +0 -0
- package/templates/lxapp-create/react/lxapp.config.json +0 -8
- package/templates/lxapp-create/react/public/.gitkeep +0 -0
- package/templates/lxapp-create/vue/lxapp.config.json +0 -8
- package/templates/lxapp-create/vue/public/.gitkeep +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PageTypeInfo } from "./builders/page-types.js";
|
|
2
|
+
export declare class TypeGenerator {
|
|
3
|
+
private projectPath;
|
|
4
|
+
constructor(projectPath: string);
|
|
5
|
+
generatePageTypes(pagePath: string, typeInfo: PageTypeInfo): string;
|
|
6
|
+
private renderDataInterface;
|
|
7
|
+
private renderActionsInterface;
|
|
8
|
+
private renderMethodParams;
|
|
9
|
+
private typeInfoToString;
|
|
10
|
+
private escapePropertyName;
|
|
11
|
+
writeTypesForPage(pagePath: string, content: string): void;
|
|
12
|
+
writeTypesConfig(): void;
|
|
13
|
+
generateIndexFile(pageTypePaths: string[]): void;
|
|
14
|
+
addToGitignore(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare function createTypeGenerator(projectPath: string): TypeGenerator;
|
|
17
|
+
//# sourceMappingURL=type-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-generator.d.ts","sourceRoot":"","sources":["../../../src/builder/core/type-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,0BAA0B,CAAC;AAEnF,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM;IAuBnE,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,kBAAkB;IAQ1B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAe1D,gBAAgB,IAAI,IAAI;IA2BxB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAwBhD,cAAc,IAAI,IAAI;CAWvB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAEtE"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
export class TypeGenerator {
|
|
4
|
+
projectPath;
|
|
5
|
+
constructor(projectPath) {
|
|
6
|
+
this.projectPath = projectPath;
|
|
7
|
+
}
|
|
8
|
+
generatePageTypes(pagePath, typeInfo) {
|
|
9
|
+
const dataFields = this.renderDataInterface(typeInfo.data);
|
|
10
|
+
const actionMethods = this.renderActionsInterface(typeInfo.methods);
|
|
11
|
+
return `// Auto-generated by lingxia-cli. DO NOT EDIT.
|
|
12
|
+
// Source: ${pagePath}
|
|
13
|
+
|
|
14
|
+
export interface PageData {
|
|
15
|
+
${dataFields}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface PageActions {
|
|
19
|
+
${actionMethods}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare global {
|
|
23
|
+
function useLingXia(): { data: PageData } & PageActions;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export {};
|
|
27
|
+
`;
|
|
28
|
+
}
|
|
29
|
+
renderDataInterface(data, indent = " ") {
|
|
30
|
+
const entries = Object.entries(data);
|
|
31
|
+
if (entries.length === 0)
|
|
32
|
+
return `${indent}[key: string]: unknown;`;
|
|
33
|
+
return entries
|
|
34
|
+
.map(([key, info]) => {
|
|
35
|
+
const optional = info.optional ? "?" : "";
|
|
36
|
+
const typeStr = this.typeInfoToString(info);
|
|
37
|
+
return `${indent}${this.escapePropertyName(key)}${optional}: ${typeStr};`;
|
|
38
|
+
})
|
|
39
|
+
.join("\n");
|
|
40
|
+
}
|
|
41
|
+
renderActionsInterface(methods, indent = " ") {
|
|
42
|
+
const entries = Object.entries(methods);
|
|
43
|
+
if (entries.length === 0)
|
|
44
|
+
return `${indent}[key: string]: (...args: unknown[]) => void;`;
|
|
45
|
+
return entries
|
|
46
|
+
.map(([name, info]) => {
|
|
47
|
+
const params = this.renderMethodParams(info.params);
|
|
48
|
+
const returnType = info.returnType || "void";
|
|
49
|
+
return `${indent}${this.escapePropertyName(name)}(${params}): ${returnType};`;
|
|
50
|
+
})
|
|
51
|
+
.join("\n");
|
|
52
|
+
}
|
|
53
|
+
renderMethodParams(params) {
|
|
54
|
+
if (params.length === 0)
|
|
55
|
+
return "";
|
|
56
|
+
return params
|
|
57
|
+
.map((p) => {
|
|
58
|
+
const optional = p.optional ? "?" : "";
|
|
59
|
+
return `${p.name}${optional}: ${p.type}`;
|
|
60
|
+
})
|
|
61
|
+
.join(", ");
|
|
62
|
+
}
|
|
63
|
+
typeInfoToString(info) {
|
|
64
|
+
switch (info.type) {
|
|
65
|
+
case "string":
|
|
66
|
+
case "number":
|
|
67
|
+
case "boolean":
|
|
68
|
+
case "null":
|
|
69
|
+
case "unknown":
|
|
70
|
+
return info.type;
|
|
71
|
+
case "array":
|
|
72
|
+
if (info.elementType) {
|
|
73
|
+
const elementType = this.typeInfoToString(info.elementType);
|
|
74
|
+
// Wrap complex types in parentheses for array notation
|
|
75
|
+
if (elementType.includes("|") || elementType.includes("&")) {
|
|
76
|
+
return `(${elementType})[]`;
|
|
77
|
+
}
|
|
78
|
+
return `${elementType}[]`;
|
|
79
|
+
}
|
|
80
|
+
return "unknown[]";
|
|
81
|
+
case "object":
|
|
82
|
+
if (info.properties && Object.keys(info.properties).length > 0) {
|
|
83
|
+
const props = Object.entries(info.properties)
|
|
84
|
+
.map(([key, propInfo]) => {
|
|
85
|
+
const optional = propInfo.optional ? "?" : "";
|
|
86
|
+
return `${this.escapePropertyName(key)}${optional}: ${this.typeInfoToString(propInfo)}`;
|
|
87
|
+
})
|
|
88
|
+
.join("; ");
|
|
89
|
+
return `{ ${props} }`;
|
|
90
|
+
}
|
|
91
|
+
return "Record<string, unknown>";
|
|
92
|
+
default:
|
|
93
|
+
return "unknown";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
escapePropertyName(name) {
|
|
97
|
+
// If name contains special characters or starts with a number, quote it
|
|
98
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name)) {
|
|
99
|
+
return name;
|
|
100
|
+
}
|
|
101
|
+
return `"${name.replace(/"/g, '\\"')}"`;
|
|
102
|
+
}
|
|
103
|
+
writeTypesForPage(pagePath, content) {
|
|
104
|
+
// Convert page path to types path
|
|
105
|
+
// e.g., "pages/home/index.tsx" -> ".lingxia/types/pages/home/index.d.ts"
|
|
106
|
+
const relativePath = pagePath.replace(/\.(tsx?|vue)$/, ".d.ts");
|
|
107
|
+
const typesDir = path.join(this.projectPath, ".lingxia", "types");
|
|
108
|
+
const outputPath = path.join(typesDir, relativePath);
|
|
109
|
+
// Ensure directory exists
|
|
110
|
+
const outputDir = path.dirname(outputPath);
|
|
111
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
112
|
+
// Write the types file
|
|
113
|
+
fs.writeFileSync(outputPath, content, "utf-8");
|
|
114
|
+
}
|
|
115
|
+
writeTypesConfig() {
|
|
116
|
+
const typesDir = path.join(this.projectPath, ".lingxia", "types");
|
|
117
|
+
fs.mkdirSync(typesDir, { recursive: true });
|
|
118
|
+
// Write a tsconfig.json for the types directory
|
|
119
|
+
const tsconfigPath = path.join(typesDir, "tsconfig.json");
|
|
120
|
+
const tsconfig = {
|
|
121
|
+
compilerOptions: {
|
|
122
|
+
target: "ESNext",
|
|
123
|
+
module: "ESNext",
|
|
124
|
+
moduleResolution: "bundler",
|
|
125
|
+
strict: true,
|
|
126
|
+
skipLibCheck: true,
|
|
127
|
+
declaration: true,
|
|
128
|
+
declarationMap: false,
|
|
129
|
+
emitDeclarationOnly: true,
|
|
130
|
+
noEmit: false,
|
|
131
|
+
},
|
|
132
|
+
include: ["**/*.d.ts"],
|
|
133
|
+
};
|
|
134
|
+
fs.writeFileSync(tsconfigPath, JSON.stringify(tsconfig, null, 2), "utf-8");
|
|
135
|
+
// Write an index.d.ts that re-exports all page types
|
|
136
|
+
// This will be updated as pages are built
|
|
137
|
+
}
|
|
138
|
+
generateIndexFile(pageTypePaths) {
|
|
139
|
+
const typesDir = path.join(this.projectPath, ".lingxia", "types");
|
|
140
|
+
const indexPath = path.join(typesDir, "index.d.ts");
|
|
141
|
+
const exports = pageTypePaths
|
|
142
|
+
.map((p) => {
|
|
143
|
+
// Convert "pages/home/index.d.ts" to "./pages/home/index"
|
|
144
|
+
const importPath = "./" + p.replace(/\.d\.ts$/, "");
|
|
145
|
+
// Create a namespace-friendly export name
|
|
146
|
+
const exportName = p
|
|
147
|
+
.replace(/\.d\.ts$/, "")
|
|
148
|
+
.replace(/\//g, "_")
|
|
149
|
+
.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
150
|
+
return `export * as ${exportName} from "${importPath}";`;
|
|
151
|
+
})
|
|
152
|
+
.join("\n");
|
|
153
|
+
const content = `// Auto-generated by lingxia-cli. DO NOT EDIT.
|
|
154
|
+
${exports}
|
|
155
|
+
`;
|
|
156
|
+
fs.writeFileSync(indexPath, content, "utf-8");
|
|
157
|
+
}
|
|
158
|
+
addToGitignore() {
|
|
159
|
+
const gitignorePath = path.join(this.projectPath, ".gitignore");
|
|
160
|
+
const entry = "\n# LingXia generated types\n.lingxia/\n";
|
|
161
|
+
if (fs.existsSync(gitignorePath)) {
|
|
162
|
+
const content = fs.readFileSync(gitignorePath, "utf-8");
|
|
163
|
+
if (!content.includes(".lingxia/")) {
|
|
164
|
+
fs.appendFileSync(gitignorePath, entry);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export function createTypeGenerator(projectPath) {
|
|
170
|
+
return new TypeGenerator(projectPath);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=type-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../../src/builder/core/type-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import fs from
|
|
2
|
-
import path from
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
3
|
export class FileUtils {
|
|
4
4
|
/**
|
|
5
5
|
* Copy directory recursively
|
|
@@ -81,7 +81,7 @@ export class FileUtils {
|
|
|
81
81
|
*/
|
|
82
82
|
readJsonFile(filePath) {
|
|
83
83
|
try {
|
|
84
|
-
const content = fs.readFileSync(filePath,
|
|
84
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
85
85
|
return JSON.parse(content);
|
|
86
86
|
}
|
|
87
87
|
catch {
|
|
@@ -93,7 +93,7 @@ export class FileUtils {
|
|
|
93
93
|
*/
|
|
94
94
|
writeJsonFile(filePath, data) {
|
|
95
95
|
const content = JSON.stringify(data, null, 2);
|
|
96
|
-
fs.writeFileSync(filePath, content,
|
|
96
|
+
fs.writeFileSync(filePath, content, "utf-8");
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build target configuration for incremental build checks
|
|
3
|
+
*/
|
|
4
|
+
export interface BuildTarget {
|
|
5
|
+
name: string;
|
|
6
|
+
srcDirs: string[];
|
|
7
|
+
srcFiles?: string[];
|
|
8
|
+
outputDir: string;
|
|
9
|
+
outputMarker?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build metadata stored in output directory
|
|
13
|
+
*/
|
|
14
|
+
export interface BuildMeta {
|
|
15
|
+
builtAt: number;
|
|
16
|
+
version: string;
|
|
17
|
+
mode: "development" | "production";
|
|
18
|
+
sourceDirs: string[];
|
|
19
|
+
configHash?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the newest modification time from a directory recursively
|
|
23
|
+
* Skips common non-source directories for performance
|
|
24
|
+
*/
|
|
25
|
+
export declare function getNewestMtime(dir: string): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get modification time of a file
|
|
28
|
+
*/
|
|
29
|
+
export declare function getMtime(targetPath: string): number;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a build target needs to be rebuilt based on mtime comparison
|
|
32
|
+
*
|
|
33
|
+
* Returns true if:
|
|
34
|
+
* - Output doesn't exist
|
|
35
|
+
* - Any source directory is newer than output
|
|
36
|
+
* - Any source file is newer than output
|
|
37
|
+
*/
|
|
38
|
+
export declare function shouldRebuild(target: BuildTarget, projectPath: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Default build metadata filename
|
|
41
|
+
*/
|
|
42
|
+
export declare const BUILD_META_FILENAME = ".build-meta.json";
|
|
43
|
+
/**
|
|
44
|
+
* Write build metadata to output directory
|
|
45
|
+
*/
|
|
46
|
+
export declare function writeBuildMeta(outputDir: string, meta: BuildMeta): void;
|
|
47
|
+
/**
|
|
48
|
+
* Read build metadata from output directory
|
|
49
|
+
*/
|
|
50
|
+
export declare function readBuildMeta(outputDir: string): BuildMeta | null;
|
|
51
|
+
/**
|
|
52
|
+
* Create a build target configuration for LxApp (view + logic)
|
|
53
|
+
*/
|
|
54
|
+
export declare function createLxAppBuildTarget(projectPath: string, outputDir: string, sourceDirs: string[]): BuildTarget;
|
|
55
|
+
/**
|
|
56
|
+
* Format elapsed time for display
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatSkipMessage(targetName: string, elapsed: number): string;
|
|
59
|
+
//# sourceMappingURL=incremental.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/utils/incremental.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAcD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuDlD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAkCT;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAWvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAWjE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,GACnB,WAAW,CAmBb;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7E"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
const SKIP_DIRS = new Set([
|
|
4
|
+
"node_modules",
|
|
5
|
+
".git",
|
|
6
|
+
".lingxia-build",
|
|
7
|
+
"dist",
|
|
8
|
+
"dist-plugin",
|
|
9
|
+
".vite",
|
|
10
|
+
".cache",
|
|
11
|
+
]);
|
|
12
|
+
const SKIP_EXTENSIONS = new Set([".log", ".map"]);
|
|
13
|
+
/**
|
|
14
|
+
* Get the newest modification time from a directory recursively
|
|
15
|
+
* Skips common non-source directories for performance
|
|
16
|
+
*/
|
|
17
|
+
export function getNewestMtime(dir) {
|
|
18
|
+
if (!fs.existsSync(dir)) {
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
let newest = 0;
|
|
22
|
+
try {
|
|
23
|
+
const stat = fs.statSync(dir);
|
|
24
|
+
if (!stat.isDirectory()) {
|
|
25
|
+
return stat.mtimeMs || 0;
|
|
26
|
+
}
|
|
27
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
// Skip hidden files and directories
|
|
30
|
+
if (entry.name.startsWith(".")) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Skip common non-source directories
|
|
34
|
+
if (entry.isDirectory() && SKIP_DIRS.has(entry.name)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const fullPath = path.join(dir, entry.name);
|
|
38
|
+
if (entry.isDirectory()) {
|
|
39
|
+
const dirMtime = getNewestMtime(fullPath);
|
|
40
|
+
if (dirMtime > newest) {
|
|
41
|
+
newest = dirMtime;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Skip non-source files
|
|
46
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
47
|
+
if (SKIP_EXTENSIONS.has(ext)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const fileStat = fs.statSync(fullPath);
|
|
52
|
+
if (fileStat.mtimeMs > newest) {
|
|
53
|
+
newest = fileStat.mtimeMs;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Ignore stat errors for individual files
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
return newest;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get modification time of a file
|
|
69
|
+
*/
|
|
70
|
+
export function getMtime(targetPath) {
|
|
71
|
+
try {
|
|
72
|
+
return fs.statSync(targetPath).mtimeMs || 0;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if a build target needs to be rebuilt based on mtime comparison
|
|
80
|
+
*
|
|
81
|
+
* Returns true if:
|
|
82
|
+
* - Output doesn't exist
|
|
83
|
+
* - Any source directory is newer than output
|
|
84
|
+
* - Any source file is newer than output
|
|
85
|
+
*/
|
|
86
|
+
export function shouldRebuild(target, projectPath) {
|
|
87
|
+
// Get output reference mtime
|
|
88
|
+
const outputMtime = target.outputMarker
|
|
89
|
+
? getMtime(target.outputMarker)
|
|
90
|
+
: getNewestMtime(target.outputDir);
|
|
91
|
+
// If output doesn't exist, need to build
|
|
92
|
+
if (outputMtime === 0) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
// Check each source directory
|
|
96
|
+
for (const srcDir of target.srcDirs) {
|
|
97
|
+
const absoluteSrcDir = path.isAbsolute(srcDir)
|
|
98
|
+
? srcDir
|
|
99
|
+
: path.join(projectPath, srcDir);
|
|
100
|
+
const srcMtime = getNewestMtime(absoluteSrcDir);
|
|
101
|
+
if (srcMtime > outputMtime) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Check additional source files
|
|
106
|
+
if (target.srcFiles) {
|
|
107
|
+
for (const srcFile of target.srcFiles) {
|
|
108
|
+
const srcMtime = getMtime(srcFile);
|
|
109
|
+
if (srcMtime > outputMtime) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Default build metadata filename
|
|
118
|
+
*/
|
|
119
|
+
export const BUILD_META_FILENAME = ".build-meta.json";
|
|
120
|
+
/**
|
|
121
|
+
* Write build metadata to output directory
|
|
122
|
+
*/
|
|
123
|
+
export function writeBuildMeta(outputDir, meta) {
|
|
124
|
+
const metaPath = path.join(outputDir, BUILD_META_FILENAME);
|
|
125
|
+
try {
|
|
126
|
+
fs.writeFileSync(metaPath, JSON.stringify(meta, null, 2), "utf-8");
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
// Non-critical, just log warning
|
|
130
|
+
console.warn("⚠️ Failed to write build metadata:", error instanceof Error ? error.message : String(error));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Read build metadata from output directory
|
|
135
|
+
*/
|
|
136
|
+
export function readBuildMeta(outputDir) {
|
|
137
|
+
const metaPath = path.join(outputDir, BUILD_META_FILENAME);
|
|
138
|
+
try {
|
|
139
|
+
if (!fs.existsSync(metaPath)) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
const content = fs.readFileSync(metaPath, "utf-8");
|
|
143
|
+
return JSON.parse(content);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Create a build target configuration for LxApp (view + logic)
|
|
151
|
+
*/
|
|
152
|
+
export function createLxAppBuildTarget(projectPath, outputDir, sourceDirs) {
|
|
153
|
+
// Core config files that should trigger rebuild
|
|
154
|
+
const configFiles = [
|
|
155
|
+
path.join(projectPath, "lxapp.json"),
|
|
156
|
+
path.join(projectPath, "lxapp.config.ts"),
|
|
157
|
+
path.join(projectPath, "lxplugin.json"),
|
|
158
|
+
path.join(projectPath, "package.json"),
|
|
159
|
+
path.join(projectPath, "tsconfig.json"),
|
|
160
|
+
path.join(projectPath, "vite.config.ts"),
|
|
161
|
+
path.join(projectPath, "vite.config.js"),
|
|
162
|
+
].filter((f) => fs.existsSync(f));
|
|
163
|
+
return {
|
|
164
|
+
name: "lxapp",
|
|
165
|
+
srcDirs: ["pages", ...sourceDirs],
|
|
166
|
+
srcFiles: configFiles,
|
|
167
|
+
outputDir,
|
|
168
|
+
outputMarker: path.join(outputDir, BUILD_META_FILENAME),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Format elapsed time for display
|
|
173
|
+
*/
|
|
174
|
+
export function formatSkipMessage(targetName, elapsed) {
|
|
175
|
+
return ` ✔ ${targetName} up to date (checked in ${elapsed}ms), skipping build`;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=incremental.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../../../src/builder/core/utils/incremental.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Page, PageFiles } from
|
|
1
|
+
import type { FrameworkType, Page, PageFiles } from "../../types/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Get page title from configuration or default
|
|
4
4
|
*/
|
|
@@ -6,7 +6,17 @@ export declare function getPageTitle(page: Page, pageFiles: PageFiles): string;
|
|
|
6
6
|
/**
|
|
7
7
|
* Detect page type from file extension
|
|
8
8
|
*/
|
|
9
|
-
export declare function detectPageType(filePath: string):
|
|
9
|
+
export declare function detectPageType(filePath: string): "html" | "react" | "vue";
|
|
10
|
+
/**
|
|
11
|
+
* Resolve page path to actual file path with extension.
|
|
12
|
+
* If pagePath has no extension, auto-detect or use specified framework.
|
|
13
|
+
*
|
|
14
|
+
* @param projectPath - Project root directory
|
|
15
|
+
* @param pagePath - Page path from lxapp.json (may or may not have extension)
|
|
16
|
+
* @param framework - Optional framework to prefer when auto-detecting
|
|
17
|
+
* @returns Resolved file path with extension, or null if not found
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolvePagePath(projectPath: string, pagePath: string, framework?: FrameworkType): string | null;
|
|
10
20
|
/**
|
|
11
21
|
* Validate page structure
|
|
12
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/utils/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/utils/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAO3E;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAWrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAazE;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,aAAa,GACxB,MAAM,GAAG,IAAI,CAqCf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,GACnB,MAAM,EAAE,CAYV"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { FileUtils } from
|
|
1
|
+
import { FileUtils } from "./file.js";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
2
4
|
const fileUtils = new FileUtils();
|
|
3
5
|
/**
|
|
4
6
|
* Get page title from configuration or default
|
|
@@ -20,16 +22,69 @@ export function getPageTitle(page, pageFiles) {
|
|
|
20
22
|
export function detectPageType(filePath) {
|
|
21
23
|
const ext = fileUtils.getExtension(filePath);
|
|
22
24
|
switch (ext) {
|
|
23
|
-
case
|
|
24
|
-
case
|
|
25
|
-
return
|
|
26
|
-
case
|
|
27
|
-
return
|
|
28
|
-
case
|
|
25
|
+
case "tsx":
|
|
26
|
+
case "jsx":
|
|
27
|
+
return "react";
|
|
28
|
+
case "vue":
|
|
29
|
+
return "vue";
|
|
30
|
+
case "html":
|
|
29
31
|
default:
|
|
30
|
-
return
|
|
32
|
+
return "html";
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* View file extensions in priority order for each framework
|
|
37
|
+
*/
|
|
38
|
+
const VIEW_EXTENSIONS = {
|
|
39
|
+
react: ["tsx", "jsx"],
|
|
40
|
+
vue: ["vue"],
|
|
41
|
+
html: ["html"],
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* All supported view extensions for auto-detection
|
|
45
|
+
*/
|
|
46
|
+
const ALL_VIEW_EXTENSIONS = ["tsx", "jsx", "vue", "html"];
|
|
47
|
+
/**
|
|
48
|
+
* Resolve page path to actual file path with extension.
|
|
49
|
+
* If pagePath has no extension, auto-detect or use specified framework.
|
|
50
|
+
*
|
|
51
|
+
* @param projectPath - Project root directory
|
|
52
|
+
* @param pagePath - Page path from lxapp.json (may or may not have extension)
|
|
53
|
+
* @param framework - Optional framework to prefer when auto-detecting
|
|
54
|
+
* @returns Resolved file path with extension, or null if not found
|
|
55
|
+
*/
|
|
56
|
+
export function resolvePagePath(projectPath, pagePath, framework) {
|
|
57
|
+
const ext = path.extname(pagePath);
|
|
58
|
+
// If path already has an extension, check if it exists
|
|
59
|
+
if (ext) {
|
|
60
|
+
const fullPath = path.join(projectPath, pagePath);
|
|
61
|
+
return fs.existsSync(fullPath) ? pagePath : null;
|
|
62
|
+
}
|
|
63
|
+
// No extension - need to detect
|
|
64
|
+
const pageDir = path.dirname(pagePath);
|
|
65
|
+
const baseName = path.basename(pagePath);
|
|
66
|
+
// Determine extension search order
|
|
67
|
+
let extensions;
|
|
68
|
+
if (framework) {
|
|
69
|
+
// Prefer specified framework's extensions, then fallback to others
|
|
70
|
+
const preferredExts = VIEW_EXTENSIONS[framework];
|
|
71
|
+
const otherExts = ALL_VIEW_EXTENSIONS.filter((e) => !preferredExts.includes(e));
|
|
72
|
+
extensions = [...preferredExts, ...otherExts];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// No framework specified - use default order (react first)
|
|
76
|
+
extensions = ALL_VIEW_EXTENSIONS;
|
|
77
|
+
}
|
|
78
|
+
// Try each extension
|
|
79
|
+
for (const extCandidate of extensions) {
|
|
80
|
+
const candidatePath = path.join(pageDir, `${baseName}.${extCandidate}`);
|
|
81
|
+
const fullPath = path.join(projectPath, candidatePath);
|
|
82
|
+
if (fs.existsSync(fullPath)) {
|
|
83
|
+
return candidatePath;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
33
88
|
/**
|
|
34
89
|
* Validate page structure
|
|
35
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/builder/core/utils/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/builder/core/utils/page.ts"],"names":[],"mappings":"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"}
|
package/dist/builder/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { buildCommand } from
|
|
1
|
+
export { buildCommand } from "./commands/build.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/builder/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { buildCommand } from
|
|
1
|
+
export { buildCommand } from "./commands/build.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface PageConfig {
|
|
2
2
|
navigationBarTitleText?: string;
|
|
3
3
|
navigationBarBackgroundColor?: string;
|
|
4
|
-
navigationBarTextStyle?:
|
|
4
|
+
navigationBarTextStyle?: "black" | "white";
|
|
5
5
|
backgroundColor?: string;
|
|
6
6
|
enablePullDownRefresh?: boolean;
|
|
7
7
|
onReachBottomDistance?: number;
|
|
@@ -10,7 +10,7 @@ export interface PageFiles {
|
|
|
10
10
|
view: {
|
|
11
11
|
path: string;
|
|
12
12
|
exists: boolean;
|
|
13
|
-
type:
|
|
13
|
+
type: "html" | "react" | "vue";
|
|
14
14
|
};
|
|
15
15
|
logic: {
|
|
16
16
|
path: string;
|
|
@@ -29,13 +29,14 @@ export interface PageFiles {
|
|
|
29
29
|
export interface Page {
|
|
30
30
|
path: string;
|
|
31
31
|
name: string;
|
|
32
|
-
type:
|
|
32
|
+
type: "html" | "react" | "vue";
|
|
33
33
|
}
|
|
34
|
+
export type FrameworkType = "react" | "vue" | "html";
|
|
34
35
|
export interface BuildOptions {
|
|
35
|
-
|
|
36
|
-
prod?: boolean;
|
|
37
|
-
plugin?: boolean;
|
|
36
|
+
release?: boolean;
|
|
38
37
|
target?: string;
|
|
38
|
+
framework?: FrameworkType;
|
|
39
|
+
minify?: boolean;
|
|
39
40
|
}
|
|
40
41
|
export interface LxPluginConfig {
|
|
41
42
|
lxPluginId: string;
|