@lingxia/cli 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/lingxia.js +91 -0
- package/dist/builder/commands/build.d.ts +3 -0
- package/dist/builder/commands/build.d.ts.map +1 -0
- package/dist/builder/commands/build.js +317 -0
- package/dist/builder/commands/build.js.map +1 -0
- package/dist/builder/core/builders/logic.d.ts +48 -0
- package/dist/builder/core/builders/logic.d.ts.map +1 -0
- package/dist/builder/core/builders/logic.js +212 -0
- package/dist/builder/core/builders/logic.js.map +1 -0
- package/dist/builder/core/builders/page-functions.d.ts +2 -0
- package/dist/builder/core/builders/page-functions.d.ts.map +1 -0
- package/dist/builder/core/builders/page-functions.js +119 -0
- package/dist/builder/core/builders/page-functions.js.map +1 -0
- package/dist/builder/core/builders/page-path-injector.d.ts +5 -0
- package/dist/builder/core/builders/page-path-injector.d.ts.map +1 -0
- package/dist/builder/core/builders/page-path-injector.js +94 -0
- package/dist/builder/core/builders/page-path-injector.js.map +1 -0
- package/dist/builder/core/builders/page.d.ts +37 -0
- package/dist/builder/core/builders/page.d.ts.map +1 -0
- package/dist/builder/core/builders/page.js +246 -0
- package/dist/builder/core/builders/page.js.map +1 -0
- package/dist/builder/core/builders/view.d.ts +23 -0
- package/dist/builder/core/builders/view.d.ts.map +1 -0
- package/dist/builder/core/builders/view.js +194 -0
- package/dist/builder/core/builders/view.js.map +1 -0
- package/dist/builder/core/config/alias-config.d.ts +4 -0
- package/dist/builder/core/config/alias-config.d.ts.map +1 -0
- package/dist/builder/core/config/alias-config.js +29 -0
- package/dist/builder/core/config/alias-config.js.map +1 -0
- package/dist/builder/core/config/build-config.d.ts +8 -0
- package/dist/builder/core/config/build-config.d.ts.map +1 -0
- package/dist/builder/core/config/build-config.js +33 -0
- package/dist/builder/core/config/build-config.js.map +1 -0
- package/dist/builder/core/config/framework.d.ts +3 -0
- package/dist/builder/core/config/framework.d.ts.map +1 -0
- package/dist/builder/core/config/framework.js +51 -0
- package/dist/builder/core/config/framework.js.map +1 -0
- package/dist/builder/core/config/lingxia-config.d.ts +55 -0
- package/dist/builder/core/config/lingxia-config.d.ts.map +1 -0
- package/dist/builder/core/config/lingxia-config.js +174 -0
- package/dist/builder/core/config/lingxia-config.js.map +1 -0
- package/dist/builder/core/config/view-build-schema.d.ts +17 -0
- package/dist/builder/core/config/view-build-schema.d.ts.map +1 -0
- package/dist/builder/core/config/view-build-schema.js +2 -0
- package/dist/builder/core/config/view-build-schema.js.map +1 -0
- package/dist/builder/core/config/view-config.d.ts +11 -0
- package/dist/builder/core/config/view-config.d.ts.map +1 -0
- package/dist/builder/core/config/view-config.js +79 -0
- package/dist/builder/core/config/view-config.js.map +1 -0
- package/dist/builder/core/config.d.ts +34 -0
- package/dist/builder/core/config.d.ts.map +1 -0
- package/dist/builder/core/config.js +73 -0
- package/dist/builder/core/config.js.map +1 -0
- package/dist/builder/core/constants/source-dirs.d.ts +4 -0
- package/dist/builder/core/constants/source-dirs.d.ts.map +1 -0
- package/dist/builder/core/constants/source-dirs.js +24 -0
- package/dist/builder/core/constants/source-dirs.js.map +1 -0
- package/dist/builder/core/constants/static-dirs.d.ts +4 -0
- package/dist/builder/core/constants/static-dirs.d.ts.map +1 -0
- package/dist/builder/core/constants/static-dirs.js +51 -0
- package/dist/builder/core/constants/static-dirs.js.map +1 -0
- package/dist/builder/core/frameworks/base.d.ts +49 -0
- package/dist/builder/core/frameworks/base.d.ts.map +1 -0
- package/dist/builder/core/frameworks/base.js +61 -0
- package/dist/builder/core/frameworks/base.js.map +1 -0
- package/dist/builder/core/frameworks/factory.d.ts +29 -0
- package/dist/builder/core/frameworks/factory.d.ts.map +1 -0
- package/dist/builder/core/frameworks/factory.js +59 -0
- package/dist/builder/core/frameworks/factory.js.map +1 -0
- package/dist/builder/core/frameworks/html.d.ts +30 -0
- package/dist/builder/core/frameworks/html.d.ts.map +1 -0
- package/dist/builder/core/frameworks/html.js +92 -0
- package/dist/builder/core/frameworks/html.js.map +1 -0
- package/dist/builder/core/frameworks/react.d.ts +33 -0
- package/dist/builder/core/frameworks/react.d.ts.map +1 -0
- package/dist/builder/core/frameworks/react.js +161 -0
- package/dist/builder/core/frameworks/react.js.map +1 -0
- package/dist/builder/core/frameworks/templates.d.ts +2 -0
- package/dist/builder/core/frameworks/templates.d.ts.map +1 -0
- package/dist/builder/core/frameworks/templates.js +3 -0
- package/dist/builder/core/frameworks/templates.js.map +1 -0
- package/dist/builder/core/frameworks/vue.d.ts +33 -0
- package/dist/builder/core/frameworks/vue.d.ts.map +1 -0
- package/dist/builder/core/frameworks/vue.js +161 -0
- package/dist/builder/core/frameworks/vue.js.map +1 -0
- package/dist/builder/core/registry.d.ts +43 -0
- package/dist/builder/core/registry.d.ts.map +1 -0
- package/dist/builder/core/registry.js +79 -0
- package/dist/builder/core/registry.js.map +1 -0
- package/dist/builder/core/template.d.ts +7 -0
- package/dist/builder/core/template.d.ts.map +1 -0
- package/dist/builder/core/template.js +57 -0
- package/dist/builder/core/template.js.map +1 -0
- package/dist/builder/core/templates/embedded.d.ts +17 -0
- package/dist/builder/core/templates/embedded.d.ts.map +1 -0
- package/dist/builder/core/templates/embedded.js +121 -0
- package/dist/builder/core/templates/embedded.js.map +1 -0
- package/dist/builder/core/utils/file.d.ts +35 -0
- package/dist/builder/core/utils/file.d.ts.map +1 -0
- package/dist/builder/core/utils/file.js +99 -0
- package/dist/builder/core/utils/file.js.map +1 -0
- package/dist/builder/core/utils/page.d.ts +14 -0
- package/dist/builder/core/utils/page.d.ts.map +1 -0
- package/dist/builder/core/utils/page.js +46 -0
- package/dist/builder/core/utils/page.js.map +1 -0
- package/dist/builder/index.d.ts +2 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +2 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/types/index.d.ts +67 -0
- package/dist/builder/types/index.d.ts.map +1 -0
- package/dist/builder/types/index.js +2 -0
- package/dist/builder/types/index.js.map +1 -0
- package/dist/commands/create.d.ts +7 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +151 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
- package/scripts/ensure-deps.cjs +54 -0
- package/scripts/install.cjs +62 -0
- package/scripts/set-version.cjs +34 -0
- package/scripts/sync-templates.cjs +36 -0
- package/templates/android-native/app/build.gradle.kts +48 -0
- package/templates/android-native/app/proguard-rules.pro +21 -0
- package/templates/android-native/app/src/main/AndroidManifest.xml +21 -0
- package/templates/android-native/app/src/main/java/MainActivity.kt +27 -0
- package/templates/android-native/app/src/main/res/values/strings.xml +3 -0
- package/templates/android-native/build.gradle.kts +5 -0
- package/templates/android-native/gradle/libs.versions.toml +16 -0
- package/templates/android-native/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/templates/android-native/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/templates/android-native/gradle.properties +4 -0
- package/templates/android-native/gradlew +185 -0
- package/templates/android-native/gradlew.bat +89 -0
- package/templates/android-native/settings.gradle.kts +25 -0
- package/templates/lxapp-create/react/lxapp.config.json +8 -0
- package/templates/lxapp-create/react/lxapp.json +8 -0
- package/templates/lxapp-create/react/lxapp.ts +8 -0
- package/templates/lxapp-create/react/package.json +26 -0
- package/templates/lxapp-create/react/pages/home/index.json +3 -0
- package/templates/lxapp-create/react/pages/home/index.ts +14 -0
- package/templates/lxapp-create/react/pages/home/index.tsx +60 -0
- package/templates/lxapp-create/react/public/.gitkeep +0 -0
- package/templates/lxapp-create/react/shared/.gitkeep +0 -0
- package/templates/lxapp-create/react/tsconfig.json +20 -0
- package/templates/lxapp-create/vue/lxapp.config.json +8 -0
- package/templates/lxapp-create/vue/lxapp.json +8 -0
- package/templates/lxapp-create/vue/lxapp.ts +8 -0
- package/templates/lxapp-create/vue/package.json +24 -0
- package/templates/lxapp-create/vue/pages/home/index.json +3 -0
- package/templates/lxapp-create/vue/pages/home/index.ts +14 -0
- package/templates/lxapp-create/vue/pages/home/index.vue +48 -0
- package/templates/lxapp-create/vue/public/.gitkeep +0 -0
- package/templates/lxapp-create/vue/shared/.gitkeep +0 -0
- package/templates/lxapp-create/vue/tsconfig.json +20 -0
- package/templates/rust-lib/Cargo.toml +13 -0
- package/templates/rust-lib/README.md +14 -0
- package/templates/rust-lib/src/lib.rs +13 -0
- package/vendor/.gitkeep +1 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function readProjectFramework(projectPath) {
|
|
4
|
+
const pkgPath = path.join(projectPath, 'package.json');
|
|
5
|
+
if (fs.existsSync(pkgPath)) {
|
|
6
|
+
try {
|
|
7
|
+
const packageJson = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
8
|
+
const framework = packageJson?.lingxia?.framework;
|
|
9
|
+
if (framework === 'react' || framework === 'vue') {
|
|
10
|
+
return framework;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// ignore
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const detected = detectFrameworkFromPages(projectPath);
|
|
18
|
+
if (detected)
|
|
19
|
+
return detected;
|
|
20
|
+
throw new Error(`Cannot determine Lingxia project framework. Please rerun ` +
|
|
21
|
+
`'lingxia create' or add {"lingxia":{"framework":"react|vue"}} to package.json.`);
|
|
22
|
+
}
|
|
23
|
+
function detectFrameworkFromPages(projectPath) {
|
|
24
|
+
const pagesDir = path.join(projectPath, 'pages');
|
|
25
|
+
if (!fs.existsSync(pagesDir)) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const entries = fs.readdirSync(pagesDir, { withFileTypes: true });
|
|
29
|
+
for (const entry of entries) {
|
|
30
|
+
if (!entry.isDirectory())
|
|
31
|
+
continue;
|
|
32
|
+
const dir = path.join(pagesDir, entry.name);
|
|
33
|
+
const reactEntry = findFirstFileWithExt(dir, ['.tsx', '.jsx']);
|
|
34
|
+
if (reactEntry)
|
|
35
|
+
return 'react';
|
|
36
|
+
const vueEntry = findFirstFileWithExt(dir, ['.vue']);
|
|
37
|
+
if (vueEntry)
|
|
38
|
+
return 'vue';
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
function findFirstFileWithExt(dir, extensions) {
|
|
43
|
+
for (const ext of extensions) {
|
|
44
|
+
const candidate = path.join(dir, `index${ext}`);
|
|
45
|
+
if (fs.existsSync(candidate)) {
|
|
46
|
+
return candidate;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=framework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../../../src/builder/core/config/framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;YAClD,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACjD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,IAAI,KAAK,CACb,2DAA2D;QACzD,gFAAgF,CACnF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW,EAAE,UAAoB;IAC7D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ViewBuildConfig } from './view-build-schema.js';
|
|
2
|
+
export type FrameworkName = 'react' | 'vue';
|
|
3
|
+
export type PluginDescriptor = string | {
|
|
4
|
+
module: string;
|
|
5
|
+
namedExport?: string;
|
|
6
|
+
options?: any;
|
|
7
|
+
};
|
|
8
|
+
export type PluginEntry = PluginDescriptor | any;
|
|
9
|
+
export interface NormalizedPluginDescriptor {
|
|
10
|
+
module: string;
|
|
11
|
+
namedExport?: string;
|
|
12
|
+
options?: any;
|
|
13
|
+
}
|
|
14
|
+
export type NormalizedPluginSpec = (NormalizedPluginDescriptor & {
|
|
15
|
+
type?: 'descriptor';
|
|
16
|
+
}) | {
|
|
17
|
+
plugin: any;
|
|
18
|
+
module?: undefined;
|
|
19
|
+
};
|
|
20
|
+
export type PluginConfig = PluginEntry[] | Partial<Record<FrameworkName, PluginEntry[]>>;
|
|
21
|
+
export interface LingxiaConfig {
|
|
22
|
+
/**
|
|
23
|
+
* Static asset directories copied during build.
|
|
24
|
+
*/
|
|
25
|
+
staticDirs?: string[];
|
|
26
|
+
/**
|
|
27
|
+
* Module path aliases shared across logic/view builds.
|
|
28
|
+
*/
|
|
29
|
+
alias?: Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Additional source directories copied into the view build workspace.
|
|
32
|
+
*/
|
|
33
|
+
sourceDirs?: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Framework-specific view build overrides.
|
|
36
|
+
*/
|
|
37
|
+
view?: LingxiaViewConfigOverrides;
|
|
38
|
+
/**
|
|
39
|
+
* Additional Vite plugins per framework.
|
|
40
|
+
*/
|
|
41
|
+
plugins?: PluginConfig;
|
|
42
|
+
/**
|
|
43
|
+
* Placeholder for future config surface so we don't need breaking changes.
|
|
44
|
+
*/
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
}
|
|
47
|
+
export type LingxiaViewConfigOverrides = Partial<Record<FrameworkName, Partial<ViewBuildConfig>>>;
|
|
48
|
+
export interface LingxiaConfigLoaderOptions {
|
|
49
|
+
filename?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function defineLingxiaConfig(config: LingxiaConfig): LingxiaConfig;
|
|
52
|
+
export declare function loadLingxiaConfig(projectPath: string, options?: LingxiaConfigLoaderOptions): LingxiaConfig | undefined;
|
|
53
|
+
export declare function extractViewOverrides(config: LingxiaConfig | undefined, framework?: FrameworkName): Partial<ViewBuildConfig> | undefined;
|
|
54
|
+
export declare function extractPluginSpecs(config?: LingxiaConfig): Partial<Record<FrameworkName, NormalizedPluginSpec[]>> | undefined;
|
|
55
|
+
//# sourceMappingURL=lingxia-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lingxia-config.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/lingxia-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN;IACE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,GAAG,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAC5B,CAAC,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,GACtD;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAExC,MAAM,MAAM,YAAY,GACpB,WAAW,EAAE,GACb,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,0BAA0B,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAChD,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAExE;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,GAAG,SAAS,CAW3B;AAgFD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAqCtC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC,GAAG,SAAS,CAoEpE"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import vm from 'vm';
|
|
4
|
+
import { createRequire } from 'module';
|
|
5
|
+
const DEFAULT_CONFIG_FILENAME = 'lingxia.config.ts';
|
|
6
|
+
const cliRequire = createRequire(import.meta.url);
|
|
7
|
+
export function defineLingxiaConfig(config) {
|
|
8
|
+
return config;
|
|
9
|
+
}
|
|
10
|
+
export function loadLingxiaConfig(projectPath, options) {
|
|
11
|
+
const configPath = path.join(projectPath, options?.filename ?? DEFAULT_CONFIG_FILENAME);
|
|
12
|
+
if (!fs.existsSync(configPath)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return readLingxiaTsConfig(configPath);
|
|
16
|
+
}
|
|
17
|
+
function readLingxiaTsConfig(filePath) {
|
|
18
|
+
try {
|
|
19
|
+
const source = fs.readFileSync(filePath, 'utf-8');
|
|
20
|
+
const ts = loadTypescriptCompiler();
|
|
21
|
+
const result = ts.transpileModule(source, {
|
|
22
|
+
compilerOptions: {
|
|
23
|
+
module: ts.ModuleKind.CommonJS,
|
|
24
|
+
target: ts.ScriptTarget.ES2019,
|
|
25
|
+
esModuleInterop: true
|
|
26
|
+
},
|
|
27
|
+
fileName: filePath,
|
|
28
|
+
reportDiagnostics: true
|
|
29
|
+
});
|
|
30
|
+
if (result.diagnostics?.length) {
|
|
31
|
+
const message = ts.formatDiagnosticsWithColorAndContext(result.diagnostics, {
|
|
32
|
+
getCanonicalFileName: f => f,
|
|
33
|
+
getCurrentDirectory: () => path.dirname(filePath),
|
|
34
|
+
getNewLine: () => '\n'
|
|
35
|
+
});
|
|
36
|
+
console.warn(`⚠️ Diagnostics while parsing ${filePath}:\n${message}`);
|
|
37
|
+
}
|
|
38
|
+
const exports = executeCommonJsModule(result.outputText, filePath);
|
|
39
|
+
const config = exports?.default ?? exports;
|
|
40
|
+
if (config && typeof config === 'object') {
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.warn(`⚠️ Failed to read Lingxia config from ${filePath}:`, error instanceof Error ? error.message : String(error));
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function executeCommonJsModule(code, filename) {
|
|
51
|
+
const module = { exports: {} };
|
|
52
|
+
const localRequire = createRequire(filename);
|
|
53
|
+
const context = {
|
|
54
|
+
module,
|
|
55
|
+
exports: module.exports,
|
|
56
|
+
require: localRequire,
|
|
57
|
+
__dirname: path.dirname(filename),
|
|
58
|
+
__filename: filename,
|
|
59
|
+
process,
|
|
60
|
+
console,
|
|
61
|
+
Buffer,
|
|
62
|
+
setTimeout,
|
|
63
|
+
clearTimeout,
|
|
64
|
+
setInterval,
|
|
65
|
+
clearInterval,
|
|
66
|
+
setImmediate,
|
|
67
|
+
clearImmediate
|
|
68
|
+
};
|
|
69
|
+
context.global = context;
|
|
70
|
+
context.globalThis = context;
|
|
71
|
+
vm.runInNewContext(code, context, { filename });
|
|
72
|
+
return module.exports;
|
|
73
|
+
}
|
|
74
|
+
function loadTypescriptCompiler() {
|
|
75
|
+
try {
|
|
76
|
+
return cliRequire('typescript');
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
throw new Error("Cannot load 'typescript'. Please add it as a dependency to use lingxia.config.ts files.");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export function extractViewOverrides(config, framework) {
|
|
83
|
+
const overrides = config?.view;
|
|
84
|
+
if (!overrides || typeof overrides !== 'object') {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
const frameworks = ['react', 'vue'];
|
|
88
|
+
// Check if it has framework-specific keys (react, vue)
|
|
89
|
+
const hasFrameworkKeys = frameworks.some(fw => Object.prototype.hasOwnProperty.call(overrides, fw));
|
|
90
|
+
// If it has framework-specific keys and a framework is requested, return that framework's config
|
|
91
|
+
if (hasFrameworkKeys && framework) {
|
|
92
|
+
const targeted = overrides[framework];
|
|
93
|
+
if (targeted && typeof targeted === 'object') {
|
|
94
|
+
return targeted;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// If it doesn't have framework keys, treat it as a shared config for all frameworks
|
|
98
|
+
if (!hasFrameworkKeys) {
|
|
99
|
+
return overrides;
|
|
100
|
+
}
|
|
101
|
+
// Fallback: if framework is requested but not found, try to return the first available framework config
|
|
102
|
+
if (framework) {
|
|
103
|
+
for (const fw of frameworks) {
|
|
104
|
+
const block = overrides[fw];
|
|
105
|
+
if (block && typeof block === 'object') {
|
|
106
|
+
return block;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
export function extractPluginSpecs(config) {
|
|
113
|
+
const pluginsConfig = config?.plugins;
|
|
114
|
+
if (!pluginsConfig) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
const frameworks = ['react', 'vue'];
|
|
118
|
+
const normalized = {};
|
|
119
|
+
let hasPlugins = false;
|
|
120
|
+
const collectEntries = (entries) => {
|
|
121
|
+
if (!entries || entries.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
const normalizedEntries = [];
|
|
124
|
+
for (const entry of entries) {
|
|
125
|
+
if (typeof entry === 'string') {
|
|
126
|
+
const trimmed = entry.trim();
|
|
127
|
+
if (trimmed.length > 0) {
|
|
128
|
+
normalizedEntries.push({ module: trimmed });
|
|
129
|
+
}
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (entry &&
|
|
133
|
+
typeof entry === 'object' &&
|
|
134
|
+
typeof entry.module === 'string') {
|
|
135
|
+
const moduleName = entry.module;
|
|
136
|
+
// Skip empty module names
|
|
137
|
+
if (moduleName.trim().length > 0) {
|
|
138
|
+
normalizedEntries.push({
|
|
139
|
+
module: moduleName,
|
|
140
|
+
namedExport: typeof entry.namedExport === 'string'
|
|
141
|
+
? entry.namedExport
|
|
142
|
+
: undefined,
|
|
143
|
+
options: entry.options
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (entry !== undefined && entry !== null) {
|
|
149
|
+
normalizedEntries.push({ plugin: entry });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return normalizedEntries;
|
|
153
|
+
};
|
|
154
|
+
if (Array.isArray(pluginsConfig)) {
|
|
155
|
+
const sharedEntries = collectEntries(pluginsConfig);
|
|
156
|
+
if (sharedEntries.length > 0) {
|
|
157
|
+
for (const framework of frameworks) {
|
|
158
|
+
normalized[framework] = [...(normalized[framework] ?? []), ...sharedEntries];
|
|
159
|
+
}
|
|
160
|
+
hasPlugins = true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (typeof pluginsConfig === 'object') {
|
|
164
|
+
for (const framework of frameworks) {
|
|
165
|
+
const entries = collectEntries(Array.isArray(pluginsConfig[framework]) ? pluginsConfig[framework] : undefined);
|
|
166
|
+
if (entries.length > 0) {
|
|
167
|
+
normalized[framework] = [...(normalized[framework] ?? []), ...entries];
|
|
168
|
+
hasPlugins = true;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return hasPlugins ? normalized : undefined;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=lingxia-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lingxia-config.js","sourceRoot":"","sources":["../../../../src/builder/core/config/lingxia-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ViewBuildConfig {
|
|
2
|
+
output: {
|
|
3
|
+
multi: Record<string, unknown>;
|
|
4
|
+
};
|
|
5
|
+
assetDir: string;
|
|
6
|
+
cssCodeSplitMulti: boolean;
|
|
7
|
+
target?: string;
|
|
8
|
+
esbuild?: Record<string, unknown>;
|
|
9
|
+
minifyStrategy?: 'esbuild' | 'terser' | boolean;
|
|
10
|
+
resolvePlugins?: (framework: 'react' | 'vue') => Promise<any[]>;
|
|
11
|
+
cssConfig?: false | ((buildDir: string) => Promise<{
|
|
12
|
+
postcss?: {
|
|
13
|
+
plugins?: any[];
|
|
14
|
+
};
|
|
15
|
+
} | undefined | null>);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=view-build-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-build-schema.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/view-build-schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,KAAK,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,SAAS,CAAC,EACN,KAAK,GACL,CAAC,CACC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;CACzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-build-schema.js","sourceRoot":"","sources":["../../../../src/builder/core/config/view-build-schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ViewBuildConfig } from './view-build-schema.js';
|
|
2
|
+
export declare const DEFAULT_ASSET_DIR = "assets";
|
|
3
|
+
import { type FrameworkName } from './lingxia-config.js';
|
|
4
|
+
export declare class ViewConfigManager {
|
|
5
|
+
private projectPath;
|
|
6
|
+
private overrides?;
|
|
7
|
+
constructor(projectPath: string, overrides?: Partial<ViewBuildConfig>);
|
|
8
|
+
getFrameworkConfig(framework: 'react' | 'vue'): ViewBuildConfig;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveUserViewConfig(projectPath: string, framework: FrameworkName): Partial<ViewBuildConfig> | undefined;
|
|
11
|
+
//# sourceMappingURL=view-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-config.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/view-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAoC1C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAC,CAA2B;gBAEjC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAKrE,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,eAAe;CAMhE;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAGtC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export const DEFAULT_ASSET_DIR = 'assets';
|
|
2
|
+
function createDefaultConfig() {
|
|
3
|
+
const baseMultiOutput = (assetDir) => ({
|
|
4
|
+
entryFileNames: 'pages/[name]/[name].js',
|
|
5
|
+
chunkFileNames: `${assetDir}/vendor-[hash].js`,
|
|
6
|
+
assetFileNames: `${assetDir}/[name].[ext]`,
|
|
7
|
+
manualChunks: null
|
|
8
|
+
});
|
|
9
|
+
return {
|
|
10
|
+
react: {
|
|
11
|
+
output: {
|
|
12
|
+
multi: baseMultiOutput(DEFAULT_ASSET_DIR)
|
|
13
|
+
},
|
|
14
|
+
assetDir: DEFAULT_ASSET_DIR,
|
|
15
|
+
cssCodeSplitMulti: true,
|
|
16
|
+
target: 'es2020',
|
|
17
|
+
esbuild: { jsx: 'automatic' },
|
|
18
|
+
minifyStrategy: 'esbuild'
|
|
19
|
+
},
|
|
20
|
+
vue: {
|
|
21
|
+
output: {
|
|
22
|
+
multi: baseMultiOutput(DEFAULT_ASSET_DIR)
|
|
23
|
+
},
|
|
24
|
+
assetDir: DEFAULT_ASSET_DIR,
|
|
25
|
+
cssCodeSplitMulti: true,
|
|
26
|
+
target: 'es2020',
|
|
27
|
+
minifyStrategy: 'esbuild'
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const defaultConfig = createDefaultConfig();
|
|
32
|
+
import { extractViewOverrides, loadLingxiaConfig } from './lingxia-config.js';
|
|
33
|
+
export class ViewConfigManager {
|
|
34
|
+
projectPath;
|
|
35
|
+
overrides;
|
|
36
|
+
constructor(projectPath, overrides) {
|
|
37
|
+
this.projectPath = projectPath;
|
|
38
|
+
this.overrides = overrides;
|
|
39
|
+
}
|
|
40
|
+
getFrameworkConfig(framework) {
|
|
41
|
+
const base = defaultConfig[framework];
|
|
42
|
+
const extra = this.overrides;
|
|
43
|
+
if (!extra)
|
|
44
|
+
return base;
|
|
45
|
+
return mergeViewConfig(base, extra);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function resolveUserViewConfig(projectPath, framework) {
|
|
49
|
+
const config = loadLingxiaConfig(projectPath);
|
|
50
|
+
return extractViewOverrides(config, framework);
|
|
51
|
+
}
|
|
52
|
+
function mergeViewConfig(base, extra) {
|
|
53
|
+
const assetDir = extra.assetDir ?? base.assetDir ?? DEFAULT_ASSET_DIR;
|
|
54
|
+
const multiOutput = {
|
|
55
|
+
...base.output.multi,
|
|
56
|
+
...(extra.output?.multi ?? {})
|
|
57
|
+
};
|
|
58
|
+
if (!extra.output?.multi?.assetFileNames) {
|
|
59
|
+
multiOutput.assetFileNames = `${assetDir}/[name].[ext]`;
|
|
60
|
+
}
|
|
61
|
+
if (!extra.output?.multi?.chunkFileNames) {
|
|
62
|
+
multiOutput.chunkFileNames = `${assetDir}/[name]-[hash].js`;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
...base,
|
|
66
|
+
...extra,
|
|
67
|
+
output: {
|
|
68
|
+
multi: multiOutput
|
|
69
|
+
},
|
|
70
|
+
assetDir,
|
|
71
|
+
cssCodeSplitMulti: extra.cssCodeSplitMulti ?? base.cssCodeSplitMulti,
|
|
72
|
+
target: extra.target ?? base.target,
|
|
73
|
+
esbuild: { ...base.esbuild, ...(extra.esbuild ?? {}) },
|
|
74
|
+
minifyStrategy: extra.minifyStrategy ?? base.minifyStrategy,
|
|
75
|
+
resolvePlugins: extra.resolvePlugins ?? base.resolvePlugins,
|
|
76
|
+
cssConfig: extra.cssConfig ?? base.cssConfig
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=view-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-config.js","sourceRoot":"","sources":["../../../../src/builder/core/config/view-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { LxPluginConfig } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Centralized configuration manager for LingXia projects
|
|
4
|
+
* Handles lxapp.json, lxplugin.json, and other configuration files
|
|
5
|
+
*/
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
private projectPath;
|
|
8
|
+
private lxappConfig;
|
|
9
|
+
private lxpluginConfig;
|
|
10
|
+
constructor(projectPath: string);
|
|
11
|
+
/**
|
|
12
|
+
* Read and cache lxapp.json configuration
|
|
13
|
+
*/
|
|
14
|
+
getLxappConfig(): any;
|
|
15
|
+
/**
|
|
16
|
+
* Read and cache lxplugin.json configuration
|
|
17
|
+
*/
|
|
18
|
+
getLxpluginConfig(): LxPluginConfig | null;
|
|
19
|
+
/**
|
|
20
|
+
* Get pages configuration from lxapp.json (default) or lxplugin.json (plugin mode)
|
|
21
|
+
*/
|
|
22
|
+
getPages(options?: {
|
|
23
|
+
plugin?: boolean;
|
|
24
|
+
}): string[];
|
|
25
|
+
/**
|
|
26
|
+
* Check if project has package.json
|
|
27
|
+
*/
|
|
28
|
+
hasPackageJson(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Read package.json if exists
|
|
31
|
+
*/
|
|
32
|
+
getPackageJson(): any | null;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/builder/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAgD;gBAE1D,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACH,cAAc,IAAI,GAAG;IAWrB;;OAEG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAc1C;;OAEG;IACH,QAAQ,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM,EAAE;IAatD;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,GAAG,GAAG,IAAI;CAO7B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Centralized configuration manager for LingXia projects
|
|
5
|
+
* Handles lxapp.json, lxplugin.json, and other configuration files
|
|
6
|
+
*/
|
|
7
|
+
export class ConfigManager {
|
|
8
|
+
projectPath;
|
|
9
|
+
lxappConfig = null;
|
|
10
|
+
lxpluginConfig = undefined;
|
|
11
|
+
constructor(projectPath) {
|
|
12
|
+
this.projectPath = projectPath;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Read and cache lxapp.json configuration
|
|
16
|
+
*/
|
|
17
|
+
getLxappConfig() {
|
|
18
|
+
if (this.lxappConfig === null) {
|
|
19
|
+
const lxappPath = path.join(this.projectPath, 'lxapp.json');
|
|
20
|
+
if (!fs.existsSync(lxappPath)) {
|
|
21
|
+
throw new Error('lxapp.json not found in project root');
|
|
22
|
+
}
|
|
23
|
+
this.lxappConfig = JSON.parse(fs.readFileSync(lxappPath, 'utf-8'));
|
|
24
|
+
}
|
|
25
|
+
return this.lxappConfig;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read and cache lxplugin.json configuration
|
|
29
|
+
*/
|
|
30
|
+
getLxpluginConfig() {
|
|
31
|
+
if (this.lxpluginConfig === undefined) {
|
|
32
|
+
const lxpluginPath = path.join(this.projectPath, 'lxplugin.json');
|
|
33
|
+
if (!fs.existsSync(lxpluginPath)) {
|
|
34
|
+
this.lxpluginConfig = null;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.lxpluginConfig = JSON.parse(fs.readFileSync(lxpluginPath, 'utf-8'));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return this.lxpluginConfig;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get pages configuration from lxapp.json (default) or lxplugin.json (plugin mode)
|
|
44
|
+
*/
|
|
45
|
+
getPages(options = {}) {
|
|
46
|
+
if (options.plugin) {
|
|
47
|
+
const pluginConfig = this.getLxpluginConfig();
|
|
48
|
+
if (!pluginConfig) {
|
|
49
|
+
throw new Error('lxplugin.json not found in project root');
|
|
50
|
+
}
|
|
51
|
+
return Object.values(pluginConfig.pages);
|
|
52
|
+
}
|
|
53
|
+
const config = this.getLxappConfig();
|
|
54
|
+
return Array.isArray(config.pages) ? config.pages : [];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if project has package.json
|
|
58
|
+
*/
|
|
59
|
+
hasPackageJson() {
|
|
60
|
+
return fs.existsSync(path.join(this.projectPath, 'package.json'));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Read package.json if exists
|
|
64
|
+
*/
|
|
65
|
+
getPackageJson() {
|
|
66
|
+
const packagePath = path.join(this.projectPath, 'package.json');
|
|
67
|
+
if (fs.existsSync(packagePath)) {
|
|
68
|
+
return JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/builder/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,WAAW,CAAS;IACpB,WAAW,GAAe,IAAI,CAAC;IAC/B,cAAc,GAAsC,SAAS,CAAC;IAEtE,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAC9B,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CACrB,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,UAAgC,EAAE;QACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-dirs.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/constants/source-dirs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7D,eAAO,MAAM,mBAAmB,YAA4B,CAAC;AAE7D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,MAAM,EAAE,CAsBV"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { loadLingxiaConfig } from '../config/lingxia-config.js';
|
|
3
|
+
const FALLBACK_SOURCE_DIRS = ['shared'];
|
|
4
|
+
export const DEFAULT_SOURCE_DIRS = [...FALLBACK_SOURCE_DIRS];
|
|
5
|
+
export function resolveSourceDirs(projectPath, config) {
|
|
6
|
+
const resolvedConfig = config ?? loadLingxiaConfig(projectPath);
|
|
7
|
+
const dirs = Array.isArray(resolvedConfig?.sourceDirs)
|
|
8
|
+
? resolvedConfig.sourceDirs
|
|
9
|
+
: null;
|
|
10
|
+
if (!dirs) {
|
|
11
|
+
return DEFAULT_SOURCE_DIRS;
|
|
12
|
+
}
|
|
13
|
+
const normalized = dirs
|
|
14
|
+
.filter(dir => typeof dir === 'string')
|
|
15
|
+
.map(dir => dir.trim())
|
|
16
|
+
.filter(dir => dir.length > 0)
|
|
17
|
+
.map(dir => dir.replace(/^[./\\]+/, '')) // normalize leading separators
|
|
18
|
+
.map(dir => dir.split(path.sep).join('/'));
|
|
19
|
+
if (normalized.length === 0) {
|
|
20
|
+
return DEFAULT_SOURCE_DIRS;
|
|
21
|
+
}
|
|
22
|
+
return Array.from(new Set(normalized));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=source-dirs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-dirs.js","sourceRoot":"","sources":["../../../../src/builder/core/constants/source-dirs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAC/B,WAAmB,EACnB,MAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC;QACpD,CAAC,CAAC,cAAc,CAAC,UAAU;QAC3B,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI;SACpB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;SACtC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,+BAA+B;SACvE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-dirs.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/constants/static-dirs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7D,eAAO,MAAM,mBAAmB,YAA4B,CAAC;AAE7D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,MAAM,EAAE,CAsBV"}
|