@cloudbase/lowcode-builder 1.1.8 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder.web.js +97 -0
- package/lib/builder/config/index.d.ts +1 -9
- package/lib/builder/config/index.js +2 -17
- package/lib/builder/core/index.d.ts +2 -32
- package/lib/builder/core/index.js +28 -146
- package/lib/builder/h5/generate.d.ts +1 -3
- package/lib/builder/h5/generate.js +1 -2
- package/lib/builder/h5/index.d.ts +6 -6
- package/lib/builder/h5/index.js +14 -20
- package/lib/builder/h5/webpack.d.ts +1 -3
- package/lib/builder/h5/webpack.js +1 -2
- package/lib/builder/mp/BuildContext.d.ts +0 -4
- package/lib/builder/mp/index.d.ts +12 -5
- package/lib/builder/mp/index.js +28 -18
- package/lib/builder/mp/materials.js +0 -6
- package/lib/builder/mp/mixMode.d.ts +3 -3
- package/lib/builder/mp/mixMode.js +2 -5
- package/lib/builder/mp/mp_config.d.ts +1 -1
- package/lib/builder/mp/mp_config.js +1 -4
- package/lib/builder/mp/util.js +1 -1
- package/lib/builder/service/webpack.d.ts +0 -7
- package/lib/builder/service/webpack.js +25 -33
- package/lib/builder/types/common.d.ts +1 -1
- package/lib/builder/util/common.d.ts +1 -1
- package/lib/builder/util/generateFiles.js +11 -3
- package/lib/builder.web.js +39 -13
- package/package.json +4 -4
- package/template/html/index.html.ejs +1 -1
- package/template/template_20221202.zip +0 -0
package/lib/builder/mp/index.js
CHANGED
|
@@ -54,18 +54,35 @@ const cals_1 = require("@cloudbase/cals");
|
|
|
54
54
|
const templateDir = `${config_1.appTemplateDir}/mp/`;
|
|
55
55
|
const em = chalk_1.default.blue.bold;
|
|
56
56
|
const error = chalk_1.default.redBright;
|
|
57
|
-
async function generateWxMp({
|
|
57
|
+
async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins, isProduction, deployMode, extraData, isMixMode, options, buildTypeList, isBrowserMpBuilder = false, ignoreInstall = false, }) {
|
|
58
58
|
var _a;
|
|
59
|
-
const { appId, projDir, materialLibs: materials, isProduction, mainAppData, domain, isPrivateMode = false, } = buildContext;
|
|
60
59
|
const operationLabel = em('Wexin MiniProgram Generated');
|
|
61
60
|
console.time(operationLabel);
|
|
62
61
|
console.log(`Generating ${em('Wexin MiniProgram')} to ${projDir}`);
|
|
63
|
-
|
|
62
|
+
console.log(em('domain') + domain);
|
|
63
|
+
let mainAppData = weapps[0];
|
|
64
|
+
const buildContext = {
|
|
65
|
+
projDir,
|
|
66
|
+
appId,
|
|
67
|
+
isProduction,
|
|
68
|
+
materialLibs: materials,
|
|
69
|
+
debugMode: !isProduction && !!process.env.WEAPPS_DEBUG,
|
|
70
|
+
isMixMode,
|
|
71
|
+
mainAppData,
|
|
72
|
+
domain,
|
|
73
|
+
isBrowserMpBuilder,
|
|
74
|
+
};
|
|
75
|
+
const yyptConfig = await (0, util_3.getYyptConfigInfo)(extraData);
|
|
76
|
+
const { allAppUsedComps } = handleUsedComponents({
|
|
77
|
+
buildContext,
|
|
78
|
+
weapps,
|
|
79
|
+
materials,
|
|
80
|
+
});
|
|
64
81
|
buildContext.miniprogramPlugins = (mainAppData.miniprogramPlugins || []).filter((plugin) => allAppUsedComps[plugin.name]);
|
|
65
82
|
// 安装依赖库,生成 materials 目录
|
|
66
83
|
await (0, materials_1.installMaterials)(projDir, allAppUsedComps, weapps, buildContext);
|
|
67
84
|
const wxmlDataPrefix = (0, mp_1.getWxmlDataPrefix)(!isProduction);
|
|
68
|
-
const { projConfig, appConfig, pageConfigs } = (0, mp_config_1.generateMpConfig)(weapps, buildContext, { mpAppId: options.mpAppId });
|
|
85
|
+
const { projConfig, appConfig, pageConfigs } = (0, mp_config_1.generateMpConfig)(weapps, buildContext, { mpAppId: options === null || options === void 0 ? void 0 : options.mpAppId });
|
|
69
86
|
// #1 generate project files
|
|
70
87
|
if (!mainAppData.mpPkgUrl) {
|
|
71
88
|
const projectFileData = {
|
|
@@ -118,8 +135,7 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
118
135
|
};
|
|
119
136
|
}
|
|
120
137
|
if (mainAppData.mpPkgUrl) {
|
|
121
|
-
// 合并 project 和 app json
|
|
122
|
-
projectConfigJson.appId = projConfig.appId;
|
|
138
|
+
// 合并 project 和 app json
|
|
123
139
|
if (!projectConfigJson.setting) {
|
|
124
140
|
projectConfigJson.setting = {};
|
|
125
141
|
}
|
|
@@ -137,6 +153,7 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
137
153
|
const importor = (0, util_3.generateLowcodeImportor)(mainAppData.lowCodes || []);
|
|
138
154
|
appFileData = {
|
|
139
155
|
...appFileData,
|
|
156
|
+
'common/wx_yypt_report_v2.js': {},
|
|
140
157
|
'app.js': { appConfig, importor },
|
|
141
158
|
'app.json': { content: appConfig },
|
|
142
159
|
'app.wxss': {
|
|
@@ -149,7 +166,6 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
149
166
|
},
|
|
150
167
|
'package.json': {
|
|
151
168
|
appId,
|
|
152
|
-
isPrivateMode,
|
|
153
169
|
extraDeps: resolveNpmDeps(),
|
|
154
170
|
},
|
|
155
171
|
};
|
|
@@ -171,7 +187,6 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
171
187
|
resourceAppid: !!options.isCrossAccount ? options.resourceAppId : '',
|
|
172
188
|
isProd: deployMode === types_1.DEPLOY_MODE.UPLOAD,
|
|
173
189
|
clientID: (_a = mainAppData.extra) === null || _a === void 0 ? void 0 : _a.clientId,
|
|
174
|
-
isPrivateMode,
|
|
175
190
|
},
|
|
176
191
|
'datasources/datasource-profiles.js.tpl': {
|
|
177
192
|
datasourceProfiles: (0, util_3.JsonToStringWithVariableName)((0, lowcode_generator_1.getDatasourceProfiles)(
|
|
@@ -206,7 +221,6 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
206
221
|
await (0, generateFiles_1.default)({
|
|
207
222
|
'package.json': {
|
|
208
223
|
appId,
|
|
209
|
-
isPrivateMode,
|
|
210
224
|
extraDeps: resolveNpmDeps(),
|
|
211
225
|
},
|
|
212
226
|
}, templateDir, subpackageRootPath, buildContext);
|
|
@@ -214,10 +228,7 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
214
228
|
}
|
|
215
229
|
}));
|
|
216
230
|
if (!isBrowserMpBuilder && fs.existsSync(path_1.default.join(miniprogramRoot, 'package.json'))) {
|
|
217
|
-
await (0, webpack_1.installDependencies)(miniprogramRoot, {
|
|
218
|
-
ignoreInstall,
|
|
219
|
-
fixNodeModulesMap: { '@cloudbase/js-sdk': !isPrivateMode, mobx: true },
|
|
220
|
-
});
|
|
231
|
+
await (0, webpack_1.installDependencies)(miniprogramRoot, { ignoreInstall });
|
|
221
232
|
}
|
|
222
233
|
await handleMpPlugins();
|
|
223
234
|
console.timeEnd(operationLabel);
|
|
@@ -229,7 +240,7 @@ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options
|
|
|
229
240
|
var _a;
|
|
230
241
|
const deps = [
|
|
231
242
|
{
|
|
232
|
-
deps: ((_a = weapps.find((a) => !a.rootPath)) === null || _a === void 0 ? void 0 : _a.npmDependencies) ||
|
|
243
|
+
deps: ((_a = weapps.find((a) => !a.rootPath)) === null || _a === void 0 ? void 0 : _a.npmDependencies) || [],
|
|
233
244
|
name: '主包',
|
|
234
245
|
},
|
|
235
246
|
];
|
|
@@ -416,7 +427,7 @@ async function writeLowCodeFiles(appData, outDir, ctx) {
|
|
|
416
427
|
// 混合模式,子包不生成顶级(应用级)的 lowcodes
|
|
417
428
|
if (!(ctx.isMixMode && appData.rootPath)) {
|
|
418
429
|
await Promise.all(lowCodes
|
|
419
|
-
.filter((mod) => mod.type !==
|
|
430
|
+
.filter((mod) => mod.type !== 'renderer')
|
|
420
431
|
.map((m) => {
|
|
421
432
|
(0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { appDir: outDir }, themeStyle.code);
|
|
422
433
|
}));
|
|
@@ -424,7 +435,7 @@ async function writeLowCodeFiles(appData, outDir, ctx) {
|
|
|
424
435
|
await Promise.all((0, weapps_core_1.loopDealWithFn)(appData.pageInstanceList, async (page) => {
|
|
425
436
|
const codes = (0, cals_1.processRuntimeCodeResources)({ id: page.id }, page.lowCodes || page.codeModules, 'page');
|
|
426
437
|
await codes
|
|
427
|
-
.filter((mod) => mod.type !==
|
|
438
|
+
.filter((mod) => mod.type !== 'renderer')
|
|
428
439
|
.forEach((m) => {
|
|
429
440
|
(0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { pageId: page.id, appDir: outDir }, themeStyle.code, ctx);
|
|
430
441
|
});
|
|
@@ -452,8 +463,7 @@ function getAppendableJson(json) {
|
|
|
452
463
|
* TODO: 与 cals 里的实现进行整合
|
|
453
464
|
* 关键点在于 appUsedComps 分组, 与 generic componen 的实现
|
|
454
465
|
*/
|
|
455
|
-
function handleUsedComponents({ buildContext, weapps }) {
|
|
456
|
-
const { materialLibs: materials } = buildContext;
|
|
466
|
+
function handleUsedComponents({ buildContext, weapps, materials, }) {
|
|
457
467
|
const appUsedComps = weapps.map((app) => {
|
|
458
468
|
var _a;
|
|
459
469
|
const usedComps = {};
|
|
@@ -327,12 +327,6 @@ async function generateCompositeComponent(compositedComp, ctx, compLibCommonReso
|
|
|
327
327
|
${compLibCommonResource.theme.class || ''}
|
|
328
328
|
`;
|
|
329
329
|
}
|
|
330
|
-
/**
|
|
331
|
-
* 低码没有开放 index 类别,直接去掉
|
|
332
|
-
*/
|
|
333
|
-
if (mod.name === 'index') {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
330
|
return (0, lowcode_1.writeCode2file)(mod, path.join(outDir, LOWCODE_DIR_NAME), { comp: compositedComp }, themeCode, ctx);
|
|
337
331
|
});
|
|
338
332
|
// await writeLowCodeFiles(weapp, appRoot)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IWeAppData, IPlugin, IMaterialItem } from '@cloudbase/lowcode-generator/lib/weapps-core';
|
|
2
2
|
import { IAppUsedComp } from '../types/common';
|
|
3
|
-
|
|
4
|
-
export declare function handleMixMode({ buildContext, apps, miniprogramRoot, plugins, }: {
|
|
5
|
-
buildContext: IBuildContext;
|
|
3
|
+
export declare function handleMixMode({ apps, generateMpPath, miniprogramRoot, plugins, ignoreInstall, }: {
|
|
6
4
|
apps: IWeAppData[];
|
|
5
|
+
generateMpPath: string;
|
|
7
6
|
miniprogramRoot: string;
|
|
8
7
|
plugins: IPlugin[];
|
|
8
|
+
ignoreInstall: boolean;
|
|
9
9
|
}): Promise<void>;
|
|
10
10
|
export declare function handleMixMaterials(projDir: string, apps: IWeAppData[], appUsedComps: IAppUsedComp[], compositedLibs: IMaterialItem[]): Promise<void[]>;
|
|
@@ -36,16 +36,13 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
36
36
|
const generateFiles_1 = require("../util/generateFiles");
|
|
37
37
|
const webpack_1 = require("../service/webpack");
|
|
38
38
|
// 将 BUILD 目录往混合模式移动
|
|
39
|
-
async function handleMixMode({
|
|
40
|
-
const { projDir: generateMpPath, isPrivateMode } = buildContext;
|
|
39
|
+
async function handleMixMode({ apps = [], generateMpPath, miniprogramRoot, plugins = [], ignoreInstall, }) {
|
|
41
40
|
// await handleMainApp()
|
|
42
41
|
// await handleAppPages()
|
|
43
42
|
await handleSubApps();
|
|
44
43
|
// await handleAppJson()
|
|
45
44
|
// await handlePkgJson()
|
|
46
|
-
await (0, webpack_1.installDependencies)(miniprogramRoot, {
|
|
47
|
-
fixNodeModulesMap: { mobx: true, '@cloudbase/js-sdk': !isPrivateMode },
|
|
48
|
-
});
|
|
45
|
+
await (0, webpack_1.installDependencies)(miniprogramRoot, { ignoreInstall });
|
|
49
46
|
await handlePlugins();
|
|
50
47
|
// 复制框架公用内容
|
|
51
48
|
async function handleMainApp() {
|
|
@@ -6,7 +6,7 @@ import { IBuildContext } from './BuildContext';
|
|
|
6
6
|
* @param kboneConfig https://wechat-miniprogram.github.io/kbone/docs/config/
|
|
7
7
|
* @param appConfigs app config from prop edit panel
|
|
8
8
|
*/
|
|
9
|
-
export declare function generateMpConfig(weapps: IWeAppData[], ctx: IBuildContext, options
|
|
9
|
+
export declare function generateMpConfig(weapps: IWeAppData[], ctx: IBuildContext, options?: {
|
|
10
10
|
mpAppId?: string;
|
|
11
11
|
}): {
|
|
12
12
|
appConfig: any;
|
|
@@ -117,9 +117,6 @@ function generateMpConfig(weapps, ctx, options) {
|
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
|
-
if (options.mpAppId) {
|
|
121
|
-
projConfig.appId = options.mpAppId;
|
|
122
|
-
}
|
|
123
120
|
// merge(pageConfigs, extractAllPagesConfig())
|
|
124
121
|
return { appConfig, projConfig, pageConfigs };
|
|
125
122
|
}
|
|
@@ -168,7 +165,7 @@ function transformDynamicData(originData) {
|
|
|
168
165
|
const temp = {};
|
|
169
166
|
for (const key in originData) {
|
|
170
167
|
const target = originData[key];
|
|
171
|
-
if (target
|
|
168
|
+
if (target && target.value) {
|
|
172
169
|
temp[key] = target.value;
|
|
173
170
|
}
|
|
174
171
|
}
|
package/lib/builder/mp/util.js
CHANGED
|
@@ -99,7 +99,7 @@ function generateDataBindMeta(bind) {
|
|
|
99
99
|
}
|
|
100
100
|
else {
|
|
101
101
|
expr = value
|
|
102
|
-
.replace(/^\w
|
|
102
|
+
.replace(/^\w+([.[])/, (_, $1) => `${isGlobal ? 'app' : '$page'}.${PREFIX_MAP[type]}${$1}`)
|
|
103
103
|
.replace(/^comp-\w+/, `$comp.${PREFIX_MAP[type]}`)
|
|
104
104
|
.replace(/^\$comp_\w+/, `$comp.${PREFIX_MAP[type]}`);
|
|
105
105
|
}
|
|
@@ -2,7 +2,6 @@ import { IMaterialItem, IWebRuntimeAppData } from '@cloudbase/lowcode-generator/
|
|
|
2
2
|
import { BuildType, WebpackModeType } from '../types/common';
|
|
3
3
|
import { RUNTIME } from '../../types';
|
|
4
4
|
export declare const PERSISTENT_DEPENDIENCES_MAP: {};
|
|
5
|
-
export declare const OUTPUT_DIR = "preview";
|
|
6
5
|
export interface IMpConfig {
|
|
7
6
|
origin: string;
|
|
8
7
|
entry: string;
|
|
@@ -75,17 +74,11 @@ export interface IInstallOpts {
|
|
|
75
74
|
version: string;
|
|
76
75
|
downloadUrl: string;
|
|
77
76
|
};
|
|
78
|
-
fixNodeModulesMap?: IFixNodeModulesMap;
|
|
79
77
|
}
|
|
80
78
|
export declare function installDependencies(targetDir: string, options?: IInstallOpts): Promise<void>;
|
|
81
|
-
interface IFixNodeModulesMap {
|
|
82
|
-
mobx?: boolean;
|
|
83
|
-
'@cloudbase/js-sdk'?: boolean;
|
|
84
|
-
}
|
|
85
79
|
export declare function getMaterialNodeModulesPathList(dependencies: IMaterialItem[] | undefined, materialsDir: string, base?: string): string[];
|
|
86
80
|
export declare function generateWebpackWebDevServerFile({ appBuildDir, buildTypeList }: {
|
|
87
81
|
appBuildDir: any;
|
|
88
82
|
buildTypeList: any;
|
|
89
83
|
}): Promise<void>;
|
|
90
84
|
export declare function downloadAssets(targetDir: string, assetUrl: string): Promise<unknown>;
|
|
91
|
-
export {};
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.downloadAssets = exports.generateWebpackWebDevServerFile = exports.getMaterialNodeModulesPathList = exports.installDependencies = exports.downloadDependencies = exports.downloadAndInstallDependencies = exports.getAllPageMpEntryPath = exports.getWebpackMpBuildParams = exports.getWebpackWebBuildParams = exports.getMpAllRouterConfig = exports.getPageName = exports.getHomePageInstance = exports.getMainAppDataByList = exports.generateMpJsonConfigFile = exports.generateKboneAppConfig = exports.generateKbonePageConfig = exports.downloadAndWriteTabBarIcon = exports.generateKboneTabBarConfig = exports.generateAppConfig = exports.generateWebpackWebBuildParamsFile = exports.fixAppJson = exports.
|
|
6
|
+
exports.downloadAssets = exports.generateWebpackWebDevServerFile = exports.getMaterialNodeModulesPathList = exports.installDependencies = exports.downloadDependencies = exports.downloadAndInstallDependencies = exports.getAllPageMpEntryPath = exports.getWebpackMpBuildParams = exports.getWebpackWebBuildParams = exports.getMpAllRouterConfig = exports.getPageName = exports.getHomePageInstance = exports.getMainAppDataByList = exports.generateMpJsonConfigFile = exports.generateKboneAppConfig = exports.generateKbonePageConfig = exports.downloadAndWriteTabBarIcon = exports.generateKboneTabBarConfig = exports.generateAppConfig = exports.generateWebpackWebBuildParamsFile = exports.fixAppJson = exports.PERSISTENT_DEPENDIENCES_MAP = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
9
|
const lodash_1 = require("lodash");
|
|
@@ -18,7 +18,6 @@ const common_2 = require("../util/common");
|
|
|
18
18
|
const types_1 = require("../../types");
|
|
19
19
|
const generateFiles_1 = require("../util/generateFiles");
|
|
20
20
|
exports.PERSISTENT_DEPENDIENCES_MAP = {};
|
|
21
|
-
exports.OUTPUT_DIR = 'preview';
|
|
22
21
|
async function fixAppJson(appBuildDir) {
|
|
23
22
|
const appJsonPath = path_1.default.resolve(appBuildDir, 'dist/mp/app.json');
|
|
24
23
|
if (!fs_extra_1.default.existsSync(appJsonPath)) {
|
|
@@ -274,7 +273,7 @@ function getWebpackWebBuildParams(appId, appBuildDir, publicPath = '/', mode = c
|
|
|
274
273
|
watch: false,
|
|
275
274
|
entry: path_1.default.resolve(appBuildDir, 'src/index.jsx'),
|
|
276
275
|
output: {
|
|
277
|
-
path: path_1.default.resolve(appBuildDir,
|
|
276
|
+
path: path_1.default.resolve(appBuildDir, './preview'),
|
|
278
277
|
filename: '[name].[contenthash].bundle.js',
|
|
279
278
|
chunkFilename: '[name].[contenthash].chunk.js',
|
|
280
279
|
publicPath: buildTypeList.includes(common_1.BuildType.APP) || buildTypeList.includes(common_1.BuildType.ADMIN_PORTAL) ? '' : publicPath,
|
|
@@ -295,6 +294,8 @@ function getWebpackWebBuildParams(appId, appBuildDir, publicPath = '/', mode = c
|
|
|
295
294
|
resolveModules: [path_1.default.resolve(appBuildDir), 'node_modules'],
|
|
296
295
|
definePlugin: {
|
|
297
296
|
'process.env.buildType': `"${buildTypeList[0]}"`,
|
|
297
|
+
'process.env.isApp': buildTypeList.includes(common_1.BuildType.APP),
|
|
298
|
+
'process.env.isAdminPortal': (0, common_1.buildAsAdminPortalByBuildType)(buildTypeList),
|
|
298
299
|
...extraDefine,
|
|
299
300
|
},
|
|
300
301
|
devtool: ['app-nvzcvt10', 'app-msa2ihs9'].includes(appId)
|
|
@@ -455,10 +456,13 @@ async function installDependencies(targetDir, options = {}) {
|
|
|
455
456
|
}
|
|
456
457
|
}
|
|
457
458
|
catch (e) { }
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
459
|
+
const packageJsonPath = path_1.default.resolve(targetDir, 'package.json');
|
|
460
|
+
/**
|
|
461
|
+
* 无 cacheMeta 或 cacheMeta.once 时 遵循 options?.ignoreInstall 配置
|
|
462
|
+
* 否则认为文件发生了更改,应该忽略参数强制安装
|
|
463
|
+
*/
|
|
464
|
+
const cacheMeta = generateFiles_1.generatedFileContents[packageJsonPath];
|
|
465
|
+
const isPkgModify = !cacheMeta || cacheMeta.once ? false : cacheMeta.modify;
|
|
462
466
|
if ((options === null || options === void 0 ? void 0 : options.ignoreInstall) && fs_extra_1.default.existsSync(path_1.default.join(targetDir, 'node_modules')) && !isPkgModify) {
|
|
463
467
|
console.log(`ignore install dependencies in ${targetDir}`);
|
|
464
468
|
return;
|
|
@@ -484,25 +488,23 @@ async function installDependencies(targetDir, options = {}) {
|
|
|
484
488
|
};
|
|
485
489
|
}
|
|
486
490
|
}
|
|
491
|
+
let installProcess;
|
|
487
492
|
// 云端构建, 选用 npm
|
|
488
|
-
const
|
|
493
|
+
const installlProcessOptions = {
|
|
489
494
|
cwd: targetDir,
|
|
490
495
|
// NODE_ENV="production"时,devDependencies里的包不会下载,兼容h5在线编译
|
|
491
496
|
env: { ...process.env, NODE_ENV: '' },
|
|
492
497
|
stdio: 'inherit',
|
|
493
498
|
};
|
|
494
|
-
let installprocess;
|
|
495
|
-
// TODO: install 失败 应该终止进程
|
|
496
499
|
if (yarnExists && (options === null || options === void 0 ? void 0 : options.runtime) !== types_1.RUNTIME.CI) {
|
|
497
500
|
const addPackage = packageName ? ['add', packageName] : [];
|
|
498
|
-
|
|
501
|
+
installProcess = cross_spawn_1.default.sync('yarn', [...addPackage, registry], installlProcessOptions);
|
|
499
502
|
}
|
|
500
503
|
else {
|
|
501
|
-
|
|
504
|
+
installProcess = cross_spawn_1.default.sync('npm', ['install', packageName, ...npmOptions], installlProcessOptions);
|
|
502
505
|
}
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
throw new Error(`安装依赖失败 ${installprocess.error || ''}`);
|
|
506
|
+
if (installProcess.status) {
|
|
507
|
+
throw new Error(`安装依赖失败 ${installProcess.error || ''}`);
|
|
506
508
|
}
|
|
507
509
|
fixNodeModules(targetDir);
|
|
508
510
|
try {
|
|
@@ -513,24 +515,14 @@ async function installDependencies(targetDir, options = {}) {
|
|
|
513
515
|
console.timeEnd(operationTag);
|
|
514
516
|
}
|
|
515
517
|
exports.installDependencies = installDependencies;
|
|
516
|
-
function fixNodeModules(projDir
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
const
|
|
521
|
-
if (fs_extra_1.default.existsSync(
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
mobxPackageFileContent.main = 'lib/mobx.min.js';
|
|
525
|
-
fs_extra_1.default.writeJSONSync(mobxPackageFile, mobxPackageFileContent);
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
if (jsSDK) {
|
|
530
|
-
const scriptPath = path_1.default.resolve(projDir, 'node_modules', '@cloudbase/weda-cloud-sdk/scripts/fix-wx-none-private');
|
|
531
|
-
if (fs_extra_1.default.existsSync(scriptPath)) {
|
|
532
|
-
const fix = require(scriptPath);
|
|
533
|
-
fix();
|
|
518
|
+
function fixNodeModules(projDir) {
|
|
519
|
+
// # fix mobx/package.json: "main": "lib/index.js" -> "main": "lib/index.js"
|
|
520
|
+
const mobxPackageFile = path_1.default.join(projDir, 'node_modules', 'mobx/package.json');
|
|
521
|
+
if (fs_extra_1.default.existsSync(mobxPackageFile)) {
|
|
522
|
+
const mobxPackageFileContent = fs_extra_1.default.readJSONSync(mobxPackageFile);
|
|
523
|
+
if (fs_extra_1.default.existsSync(path_1.default.join(projDir, 'node_modules', 'mobx/lib/mobx.min.js'))) {
|
|
524
|
+
mobxPackageFileContent.main = 'lib/mobx.min.js';
|
|
525
|
+
fs_extra_1.default.writeJSONSync(mobxPackageFile, mobxPackageFileContent);
|
|
534
526
|
}
|
|
535
527
|
}
|
|
536
528
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { BuildType, GenerateMpType, WebpackModeType, WebpackBuildCallBack, IPackageJson, buildAsWebByBuildType, buildAsAdminPortalByBuildType, buildAsXPageByBuildType, IAppUsedComp, IUsedComps, ISyncProp, IComponentInputProps, IFileCodeMap, } from '@cloudbase/lowcode-generator/lib/generator/types/common';
|
|
2
2
|
import { IComponentMeta, ICompositedComponent } from '@cloudbase/lowcode-generator/lib/weapps-core';
|
|
3
|
-
export
|
|
3
|
+
export type IComponentsInfoMap = {
|
|
4
4
|
[componentSourceKey: string]: ({
|
|
5
5
|
meta: IComponentMeta;
|
|
6
6
|
} & {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IComponentInputProps, IComponentsInfoMap, IPackageJson } from '../types/common';
|
|
2
2
|
import { IMaterialItem, IWeAppComponentInstance, IWeAppCode } from '@cloudbase/lowcode-generator/lib/weapps-core';
|
|
3
3
|
export { getMetaInfoBySourceKey, isArray, isPlainObject, deepDeal, simpleDeepClone, deepDealSchema, getFileNameByUrl, } from '@cloudbase/lowcode-generator/lib/generator/util/common';
|
|
4
|
-
export
|
|
4
|
+
export type PromiseResult<T> = Promise<[null, T] | [Error, null]>;
|
|
5
5
|
export declare function promiseWrapper<T>(p: Promise<T>): PromiseResult<T>;
|
|
6
6
|
export declare function getCurrentPackageJson(): {
|
|
7
7
|
name: any;
|
|
@@ -67,8 +67,16 @@ async function generateFiles(appFileData, srcDir, dstDir, ctx) {
|
|
|
67
67
|
}
|
|
68
68
|
exports.default = generateFiles;
|
|
69
69
|
async function writeFile(outFile, content) {
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
if (!exports.generatedFileContents[outFile]) {
|
|
71
|
+
exports.generatedFileContents[outFile] = {
|
|
72
|
+
once: true,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
exports.generatedFileContents[outFile].once = false;
|
|
77
|
+
}
|
|
78
|
+
const meta = exports.generatedFileContents[outFile];
|
|
79
|
+
const generated = meta.content;
|
|
72
80
|
if (generated === content && fs_extra_1.default.existsSync(outFile)) {
|
|
73
81
|
exports.generatedFileContents[outFile].modify = false;
|
|
74
82
|
return false;
|
|
@@ -76,7 +84,7 @@ async function writeFile(outFile, content) {
|
|
|
76
84
|
// console.log(outFile);
|
|
77
85
|
await fs_extra_1.default.ensureFile(outFile);
|
|
78
86
|
await fs_extra_1.default.writeFile(outFile, content);
|
|
79
|
-
exports.generatedFileContents[outFile] = { content, modify: true };
|
|
87
|
+
exports.generatedFileContents[outFile] = { ...meta, content, modify: true };
|
|
80
88
|
return true;
|
|
81
89
|
}
|
|
82
90
|
exports.writeFile = writeFile;
|