@cloudbase/lowcode-builder 1.1.8 → 1.1.10

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.
@@ -6,7 +6,7 @@ export declare const materialsDirName = "materials";
6
6
  * src/template的代码,在IDE编辑器插件中构建builder
7
7
  * 存放在大账号:100015939275。访问地址:https://console.cloud.tencent.com/cos/bucket?bucket=comp-public-1303824488&region=ap-shanghai&path=%252Flcap-builder%252F
8
8
  */
9
- export declare const builderTemplateURL = "https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcap-builder/template_20220810.zip";
9
+ export declare const builderTemplateURL = "https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcap-builder/template_20221202.zip";
10
10
  /**
11
11
  * miniprogram的代码,IDE插件后续会提供端功能
12
12
  * 存放在大账号:100015939275。访问地址:https://console.cloud.tencent.com/cos/bucket?bucket=comp-public-1303824488&region=ap-shanghai&path=%252Flcap-builder%252F
@@ -16,11 +16,3 @@ export declare const miniprogramURL = "https://comp-public-1303824488.cos.ap-sha
16
16
  * miniprogram_npm存放目录。IDE插件builder用到
17
17
  */
18
18
  export declare const miniprogramDir: string;
19
- export interface ICDN_ENDPOINTS_COFIG {
20
- common?: string;
21
- cloudbase?: string;
22
- cdngo?: string;
23
- aegis?: string;
24
- }
25
- export declare const CDN_ENDPONTS_CONFIG: ICDN_ENDPOINTS_COFIG;
26
- export declare function generateCdnEndpoints(endpoints?: ICDN_ENDPOINTS_COFIG): ICDN_ENDPOINTS_COFIG;
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generateCdnEndpoints = exports.CDN_ENDPONTS_CONFIG = exports.miniprogramDir = exports.miniprogramURL = exports.builderTemplateURL = exports.materialsDirName = exports.appTemplateDir = exports.sharedMaterialsDir = exports.OFFICIAL_LIB_KEY = exports.rpxConfig = exports.remConfig = exports.npmRegistry = exports.KBONE_PAGE_KEYS = exports.MP_CONFIG_MODULE_NAME = exports.REPLACE_SIGN = void 0;
29
+ exports.miniprogramDir = exports.miniprogramURL = exports.builderTemplateURL = exports.materialsDirName = exports.appTemplateDir = exports.sharedMaterialsDir = exports.OFFICIAL_LIB_KEY = exports.rpxConfig = exports.remConfig = exports.npmRegistry = exports.KBONE_PAGE_KEYS = exports.MP_CONFIG_MODULE_NAME = exports.REPLACE_SIGN = void 0;
30
30
  const path = __importStar(require("path"));
31
31
  const os_1 = __importDefault(require("os"));
32
32
  var index_1 = require("@cloudbase/lowcode-generator/lib/generator/config/index");
@@ -44,7 +44,7 @@ exports.materialsDirName = 'materials'; // materials diretory of current project
44
44
  * src/template的代码,在IDE编辑器插件中构建builder
45
45
  * 存放在大账号:100015939275。访问地址:https://console.cloud.tencent.com/cos/bucket?bucket=comp-public-1303824488&region=ap-shanghai&path=%252Flcap-builder%252F
46
46
  */
47
- exports.builderTemplateURL = 'https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcap-builder/template_20220810.zip';
47
+ exports.builderTemplateURL = 'https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcap-builder/template_20221202.zip';
48
48
  /**
49
49
  * miniprogram的代码,IDE插件后续会提供端功能
50
50
  * 存放在大账号:100015939275。访问地址:https://console.cloud.tencent.com/cos/bucket?bucket=comp-public-1303824488&region=ap-shanghai&path=%252Flcap-builder%252F
@@ -54,18 +54,3 @@ exports.miniprogramURL = 'https://comp-public-1303824488.cos.ap-shanghai.myqclou
54
54
  * miniprogram_npm存放目录。IDE插件builder用到
55
55
  */
56
56
  exports.miniprogramDir = path.join(os_1.default.homedir(), exports.sharedMaterialsDir, 'miniprogram_npm');
57
- exports.CDN_ENDPONTS_CONFIG = {
58
- common: '',
59
- cloudbase: '//static.cloudbase.net',
60
- cdngo: 'https://qbase.cdn-go.cn',
61
- aegis: 'https://cdn-go.cn',
62
- };
63
- function generateCdnEndpoints(endpoints = exports.CDN_ENDPONTS_CONFIG) {
64
- for (const key in exports.CDN_ENDPONTS_CONFIG) {
65
- if (!Object.prototype.hasOwnProperty.call(endpoints, key)) {
66
- endpoints[key] = endpoints.common ? endpoints.common : exports.CDN_ENDPONTS_CONFIG[key];
67
- }
68
- }
69
- return endpoints;
70
- }
71
- exports.generateCdnEndpoints = generateCdnEndpoints;
@@ -2,8 +2,7 @@ import { IMaterialItem, IWeAppData, IPlugin, IExtraData } from '@cloudbase/lowco
2
2
  import { BuildType, GenerateMpType, WebpackBuildCallBack, WebpackModeType } from '../types/common';
3
3
  import { DEPLOY_MODE, RUNTIME } from '../../types';
4
4
  import { IPlatformApp } from '@cloudbase/cals';
5
- import { ICDN_ENDPOINTS_COFIG } from '../config';
6
- interface IBaseAppProps {
5
+ export interface IBaseAppProps {
7
6
  appKey: string;
8
7
  dependencies?: IMaterialItem[];
9
8
  publicPath?: string;
@@ -36,40 +35,11 @@ export interface IBuildWedaApp extends IBaseAppProps {
36
35
  path?: string;
37
36
  };
38
37
  isBrowserMpBuilder?: boolean;
39
- cdnEndpoints?: ICDN_ENDPOINTS_COFIG;
40
- isPrivateMode?: boolean;
41
38
  }
42
- export declare function buildWedaApp({ cals, subAppCalsList, dependencies, appKey, runtime, ignoreInstall, buildTypeList, mode, devTool, deployOptions, generateMpType, plugins, extraData, resourceAppId, domain, output, isBrowserMpBuilder, cdnEndpoints, isPrivateMode, }: IBuildWedaApp, cb?: WebpackBuildCallBack): Promise<string | undefined>;
39
+ export declare function buildWedaApp({ cals, subAppCalsList, dependencies, appKey, runtime, ignoreInstall, buildTypeList, mode, devTool, deployOptions, generateMpType, plugins, extraData, resourceAppId, domain, output, isBrowserMpBuilder, }: IBuildWedaApp, cb?: WebpackBuildCallBack): Promise<string | undefined>;
43
40
  export declare function cleanComponentDir(): Promise<void>;
44
41
  export declare const version: any;
45
42
  export { getFiles, fileToZip, strToBuf } from '../util/generateFiles';
46
43
  export { downloadZip } from '../util/net';
47
44
  export { getCompileDirs } from '../util';
48
45
  export default buildWedaApp;
49
- interface INormalizeInput {
50
- appId?: string;
51
- appKey?: string;
52
- dependencies?: IBuildWedaApp['dependencies'];
53
- buildTypeList: IBuildWedaApp['buildTypeList'];
54
- mainAppSerializeData?: IBuildWedaApp['cals'];
55
- cals?: IBuildWedaApp['cals'];
56
- subAppSerializeDataList?: IBuildWedaApp['subAppCalsList'];
57
- subAppCalsList?: IBuildWedaApp['subAppCalsList'];
58
- deployOptions: IBuildWedaApp['deployOptions'];
59
- mpAppId?: string;
60
- extraData?: {
61
- isComposite: boolean;
62
- compProps: {};
63
- };
64
- [key: string]: any;
65
- }
66
- interface InormalizeOutput extends INormalizeInput {
67
- dependencies: Required<INormalizeInput['dependencies']>;
68
- }
69
- export declare function normalizeInputs(inputs: INormalizeInput, { envId, getWebRootPath, }: {
70
- envId: string;
71
- getWebRootPath?: ({ appId, deployOptions }: {
72
- appId: any;
73
- deployOptions: any;
74
- }) => string;
75
- }): InormalizeOutput;
@@ -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.normalizeInputs = exports.getCompileDirs = exports.downloadZip = exports.strToBuf = exports.fileToZip = exports.getFiles = exports.version = exports.cleanComponentDir = exports.buildWedaApp = void 0;
6
+ exports.getCompileDirs = exports.downloadZip = exports.strToBuf = exports.fileToZip = exports.getFiles = exports.version = exports.cleanComponentDir = exports.buildWedaApp = void 0;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
9
  const path_1 = __importDefault(require("path"));
@@ -20,7 +20,7 @@ const pkg = require('../../../package.json');
20
20
  async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appKey = 'test', runtime = types_1.RUNTIME.NONE, ignoreInstall = false, buildTypeList = [common_1.BuildType.WEB], mode = common_1.WebpackModeType.PRODUCTION, devTool = 'webpack', deployOptions = { mode: types_1.DEPLOY_MODE.PREVIEW }, generateMpType = common_1.GenerateMpType.APP, plugins = [], extraData = {
21
21
  isComposite: false,
22
22
  compProps: {},
23
- }, resourceAppId = undefined, domain = '', output, isBrowserMpBuilder = false, cdnEndpoints, isPrivateMode = false, }, cb) {
23
+ }, resourceAppId = undefined, domain = '', output, isBrowserMpBuilder = false, }, cb) {
24
24
  var _a, _b;
25
25
  if (!cals) {
26
26
  console.error('无效的应用配置');
@@ -28,17 +28,6 @@ async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appK
28
28
  }
29
29
  const { mode: deployMode = types_1.DEPLOY_MODE.PREVIEW } = deployOptions;
30
30
  let appBuildDir = (output === null || output === void 0 ? void 0 : output.path) || (runtime === types_1.RUNTIME.CI ? (_a = (0, util_1.getCompileDirs)('app')) === null || _a === void 0 ? void 0 : _a.appBuildDir : (_b = (0, util_1.getCompileDirs)(appKey)) === null || _b === void 0 ? void 0 : _b.appBuildDir);
31
- const buildContext = {
32
- projDir: appBuildDir,
33
- appId: appKey,
34
- isProduction: mode === common_1.WebpackModeType.PRODUCTION,
35
- materialLibs: dependencies,
36
- debugMode: mode !== common_1.WebpackModeType.PRODUCTION && !!process.env.WEAPPS_DEBUG,
37
- isMixMode: generateMpType === common_1.GenerateMpType.SUBPACKAGE,
38
- domain,
39
- isBrowserMpBuilder,
40
- isPrivateMode,
41
- };
42
31
  console.log('domain', domain);
43
32
  console.log('应用名', appKey);
44
33
  console.log('生成模式', generateMpType);
@@ -48,25 +37,28 @@ async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appK
48
37
  if (buildTypeList.includes(common_1.BuildType.MP)) {
49
38
  const mainAppSerializeData = (0, common_2.processCals2WeappsData)(cals, dependencies);
50
39
  const subAppSerializeDataList = (subAppCalsList === null || subAppCalsList === void 0 ? void 0 : subAppCalsList.map((item) => (0, common_2.processCals2WeappsData)(item, dependencies))) || [];
40
+ appBuildDir = (output === null || output === void 0 ? void 0 : output.path) || path_1.default.join(appBuildDir, 'mp');
41
+ const isMixMode = generateMpType === common_1.GenerateMpType.SUBPACKAGE;
51
42
  const apps = [mainAppSerializeData, ...subAppSerializeDataList];
52
43
  if (isBrowserMpBuilder) {
53
44
  // 尽早下载物料
54
45
  await (0, net_1.downloadBrowserMaterial)(output === null || output === void 0 ? void 0 : output.path);
55
46
  }
56
- const mpBuildContext = {
57
- ...buildContext,
58
- projDir: (output === null || output === void 0 ? void 0 : output.path) || path_1.default.join(appBuildDir, 'mp'),
59
- mainAppData: mainAppSerializeData,
60
- };
61
47
  const result = await (0, index_1.generateWxMp)({
62
48
  weapps: apps,
63
- buildContext: mpBuildContext,
49
+ projDir: appBuildDir,
50
+ appId: appKey,
51
+ domain: domain,
52
+ materials: dependencies,
64
53
  plugins,
54
+ isProduction: mode === common_1.WebpackModeType.PRODUCTION,
65
55
  deployMode,
56
+ extraData,
57
+ isMixMode,
66
58
  options: {
67
59
  isCrossAccount: resourceAppId !== deployOptions.targetMpAppId,
68
- mpAppId: deployOptions.mpAppId || '',
69
60
  resourceAppId,
61
+ mpAppId: deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.mpAppId,
70
62
  },
71
63
  buildTypeList,
72
64
  isBrowserMpBuilder,
@@ -74,16 +66,17 @@ async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appK
74
66
  });
75
67
  // 如果是混合模式,则将特定的目录复制到工程下
76
68
  // 针对 app.json / package.json 则采用 merge 的操作
77
- if (buildContext.isMixMode) {
78
- console.log(chalk_1.default.green('【混合模式】'), mpBuildContext.projDir);
69
+ if (isMixMode) {
70
+ console.log(chalk_1.default.green('【混合模式】'), appBuildDir);
79
71
  await (0, mixMode_1.handleMixMode)({
80
- buildContext: mpBuildContext,
81
72
  apps,
73
+ generateMpPath: appBuildDir,
82
74
  miniprogramRoot: result.miniprogramRoot,
83
75
  plugins,
76
+ ignoreInstall,
84
77
  });
85
78
  }
86
- const outDir = mpBuildContext.projDir;
79
+ const outDir = appBuildDir;
87
80
  let projectJsonPath = path_1.default.resolve(outDir, 'project.config.json');
88
81
  await (0, postProcess_1.postprocessProjectConfig)(projectJsonPath, {
89
82
  appid: deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.mpAppId,
@@ -96,16 +89,18 @@ async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appK
96
89
  // 模板需要占位保证 mp 文件夹存在
97
90
  fs_extra_1.default.removeSync(path_1.default.resolve(outDir, 'miniprogram_npm'));
98
91
  }
99
- await (cb === null || cb === void 0 ? void 0 : cb(null, {
92
+ cb === null || cb === void 0 ? void 0 : cb(null, {
100
93
  ...result,
101
94
  outDir,
102
95
  timeElapsed: Date.now() - startTime,
103
- }));
96
+ });
104
97
  return outDir;
105
98
  }
106
99
  else {
107
100
  const h5BuildDir = await (0, index_2.buildH5App)({
108
- buildContext: { ...buildContext, isMixMode: false },
101
+ appKey,
102
+ buildDir: appBuildDir,
103
+ dependencies,
109
104
  cals,
110
105
  subAppCalsList,
111
106
  extraData,
@@ -115,36 +110,18 @@ async function buildWedaApp({ cals, subAppCalsList = [], dependencies = [], appK
115
110
  runtime,
116
111
  deployMode,
117
112
  ignoreInstall,
118
- cdnEndpoints,
113
+ domain,
119
114
  });
120
- await (cb === null || cb === void 0 ? void 0 : cb(null, {
115
+ cb === null || cb === void 0 ? void 0 : cb(null, {
121
116
  outDir: h5BuildDir,
122
117
  timeElapsed: Date.now() - startTime,
123
- }));
118
+ });
124
119
  return h5BuildDir;
125
120
  }
126
121
  }
127
- catch (err) {
128
- if (err.length) {
129
- let messageList = (err[0] || '').split('\n');
130
- let lineIndex = 0;
131
- let reg = /node_modules\/@babel/;
132
- messageList.find((str, index) => {
133
- if (reg.test(str)) {
134
- lineIndex = index;
135
- return true;
136
- }
137
- else {
138
- return false;
139
- }
140
- });
141
- if (lineIndex) {
142
- messageList = messageList.slice(0, lineIndex);
143
- }
144
- err = new Error(messageList.join('\n'));
145
- }
146
- cb === null || cb === void 0 ? void 0 : cb(err);
147
- throw err;
122
+ catch (e) {
123
+ cb === null || cb === void 0 ? void 0 : cb(e);
124
+ throw e;
148
125
  }
149
126
  }
150
127
  exports.buildWedaApp = buildWedaApp;
@@ -162,98 +139,3 @@ Object.defineProperty(exports, "downloadZip", { enumerable: true, get: function
162
139
  var util_2 = require("../util");
163
140
  Object.defineProperty(exports, "getCompileDirs", { enumerable: true, get: function () { return util_2.getCompileDirs; } });
164
141
  exports.default = buildWedaApp;
165
- function normalizeInputs(inputs, { envId, getWebRootPath, }) {
166
- const { extraData = { isComposite: false, compProps: {} } } = inputs;
167
- /**
168
- * 过滤处理 dependencies
169
- */
170
- let map = {};
171
- inputs.dependencies = (inputs.dependencies || []).reduce((list, item) => {
172
- if (!map[`${item.name}@${item.version}`]) {
173
- map[`${item.name}@${item.version}`] = true;
174
- list.push(item);
175
- }
176
- return list;
177
- }, []);
178
- const normalizeCalsOptions = {
179
- buildTypeList: inputs.buildTypeList,
180
- envId,
181
- deployOptions: inputs.deployOptions,
182
- appId: inputs.appId || inputs.appKey,
183
- getWebRootPath: getWebRootPath || _getWebRootPath,
184
- };
185
- if (inputs.mainAppSerializeData) {
186
- inputs.mainAppSerializeData = normalizeCals(inputs.mainAppSerializeData, normalizeCalsOptions);
187
- if ((0, common_1.buildAsWebByBuildType)(inputs.buildTypeList)) {
188
- inputs.subAppSerializeDataList = [];
189
- }
190
- }
191
- if (inputs.cals) {
192
- inputs.cals = normalizeCals(inputs.cals, normalizeCalsOptions);
193
- if ((0, common_1.buildAsWebByBuildType)(inputs.buildTypeList)) {
194
- inputs.subAppCalsList = [];
195
- }
196
- }
197
- if (!(0, common_1.buildAsWebByBuildType)(inputs.buildTypeList)) {
198
- // 小程序构建
199
- const { mpAppId, deployOptions = { mode: types_1.DEPLOY_MODE.PREVIEW } } = inputs;
200
- inputs.deployOptions = {
201
- ...deployOptions,
202
- mpAppId: deployOptions.mpAppId || mpAppId,
203
- };
204
- if (!inputs.deployOptions.targetMpAppId) {
205
- inputs.deployOptions.targetMpAppId = inputs.deployOptions.mpAppId;
206
- }
207
- }
208
- if (extraData.isComposite) {
209
- Object.keys(extraData.compProps.events).forEach((eName) => {
210
- extraData.compProps.events[eName] = `$$EVENT_${eName}$$`;
211
- });
212
- }
213
- return inputs;
214
- }
215
- exports.normalizeInputs = normalizeInputs;
216
- function normalizeCals(cals, { buildTypeList, envId, deployOptions, appId, getWebRootPath }) {
217
- var _a, _b;
218
- if (!cals.extra) {
219
- cals.extra = {};
220
- }
221
- if (!cals.mpPkgUrl) {
222
- if (buildTypeList.includes(common_1.BuildType.APP) ||
223
- buildTypeList.includes(common_1.BuildType.XPAGE_PC) ||
224
- buildTypeList.includes(common_1.BuildType.ADMIN_PORTAL)) {
225
- cals.extra.historyType = types_1.HISTORY_TYPE.HASH;
226
- }
227
- }
228
- if (!((_a = cals === null || cals === void 0 ? void 0 : cals.extra) === null || _a === void 0 ? void 0 : _a.envId)) {
229
- cals.extra.envId = envId;
230
- }
231
- if ((0, common_1.buildAsWebByBuildType)(buildTypeList)) {
232
- // web 构建不处理小程序插件
233
- if (cals.extra.miniprogramPlugins) {
234
- cals.extra.miniprogramPlugins = [];
235
- }
236
- let { appConfig = {} } = cals.extra;
237
- let { window = {} } = appConfig;
238
- let path = getWebRootPath({ appId, deployOptions });
239
- cals.extra.appConfig = {
240
- ...appConfig,
241
- window: {
242
- ...window,
243
- // Todo: 处理自定义域名逻辑
244
- publicPath: (0, common_1.buildAsXPageByBuildType)(buildTypeList)
245
- ? (deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.publicPath) || `https://${(_b = cals.extra) === null || _b === void 0 ? void 0 : _b.domain}${path}`
246
- : path,
247
- basename: (0, common_1.buildAsAdminPortalByBuildType)(buildTypeList)
248
- ? `app/${appId}${(deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.mode) !== types_1.DEPLOY_MODE.UPLOAD ? '-preview' : ''}`
249
- : (0, common_1.buildAsXPageByBuildType)(buildTypeList)
250
- ? '/'
251
- : path,
252
- },
253
- };
254
- }
255
- return cals;
256
- }
257
- function _getWebRootPath({ appId, deployOptions }) {
258
- return (deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.mode) === types_1.DEPLOY_MODE.PREVIEW ? `/${appId}/preview/` : `/${appId}/production/`;
259
- }
@@ -1,11 +1,10 @@
1
1
  import { BuildAppProps } from '@cloudbase/lowcode-generator';
2
- import { ICDN_ENDPOINTS_COFIG } from '../config';
3
2
  import { BuildType } from '../types/common';
4
3
  /**
5
4
  * 该函数从 @govcloud/generate 取到需要的模版文件
6
5
  */
7
6
  export declare function generateProjectFiles(buildData: BuildAppProps): Promise<void>;
8
- export declare function generateHTML({ appId, appBuildDir, jsApis, mode, devTool, isBuildApp, buildTypeList, cdnEndpoints, }: {
7
+ export declare function generateHTML({ appId, appBuildDir, jsApis, mode, devTool, isBuildApp, buildTypeList, }: {
9
8
  appId: string;
10
9
  jsApis: string[];
11
10
  appBuildDir: string;
@@ -13,7 +12,6 @@ export declare function generateHTML({ appId, appBuildDir, jsApis, mode, devTool
13
12
  devTool: string;
14
13
  isBuildApp: boolean;
15
14
  buildTypeList: BuildType[];
16
- cdnEndpoints?: ICDN_ENDPOINTS_COFIG;
17
15
  }): Promise<void>;
18
16
  export declare function handleAssets({ appBuildDir, buildTypeList, assets, }: {
19
17
  appBuildDir: string;
@@ -24,7 +24,7 @@ async function generateProjectFiles(buildData) {
24
24
  }));
25
25
  }
26
26
  exports.generateProjectFiles = generateProjectFiles;
27
- async function generateHTML({ appId, appBuildDir, jsApis, mode, devTool, isBuildApp, buildTypeList, cdnEndpoints, }) {
27
+ async function generateHTML({ appId, appBuildDir, jsApis, mode, devTool, isBuildApp, buildTypeList, }) {
28
28
  const templatePath = path_1.default.join(config_1.appTemplateDir, 'html', 'index.html.ejs');
29
29
  const dstFilePath = path_1.default.join(appBuildDir, 'index.html');
30
30
  const packageTpl = await fs_extra_1.default.readFile(templatePath, { encoding: 'utf8' });
@@ -37,7 +37,6 @@ async function generateHTML({ appId, appBuildDir, jsApis, mode, devTool, isBuild
37
37
  mode,
38
38
  isBuildApp,
39
39
  isAdminPortal: (0, common_2.buildAsAdminPortalByBuildType)(buildTypeList),
40
- cdnEndpoints: (0, config_1.generateCdnEndpoints)(cdnEndpoints),
41
40
  }));
42
41
  }
43
42
  exports.generateHTML = generateHTML;
@@ -1,13 +1,13 @@
1
- import { II18nConfig, IExtraData } from '@cloudbase/lowcode-generator/lib/weapps-core';
1
+ import { IMaterialItem, II18nConfig, IExtraData } from '@cloudbase/lowcode-generator/lib/weapps-core';
2
2
  import { BuildType, WebpackModeType } from '../types/common';
3
3
  import { DEPLOY_MODE, RUNTIME } from '../../types';
4
4
  import { IPlatformApp } from '@cloudbase/cals';
5
- import { ICDN_ENDPOINTS_COFIG } from '../config';
6
- import { IBuildContext } from '../mp/BuildContext';
7
- export declare function buildH5App({ buildContext, i18nConfig, extraData, cals, buildTypeList, subAppCalsList, mode, devTool, runtime, deployMode, ignoreInstall, cdnEndpoints, }: {
8
- buildContext: Omit<IBuildContext, 'mainAppData'>;
5
+ export declare function buildH5App({ appKey, buildDir, dependencies, i18nConfig, extraData, cals, buildTypeList, subAppCalsList, mode, devTool, runtime, deployMode, ignoreInstall, domain, }: {
6
+ appKey: string;
7
+ buildDir: string;
9
8
  cals: IPlatformApp;
10
9
  subAppCalsList: IPlatformApp[];
10
+ dependencies: IMaterialItem[];
11
11
  i18nConfig?: II18nConfig;
12
12
  buildTypeList: BuildType[];
13
13
  extraData: IExtraData;
@@ -16,5 +16,5 @@ export declare function buildH5App({ buildContext, i18nConfig, extraData, cals,
16
16
  runtime?: RUNTIME;
17
17
  deployMode?: DEPLOY_MODE;
18
18
  ignoreInstall?: boolean;
19
- cdnEndpoints?: ICDN_ENDPOINTS_COFIG;
19
+ domain: string;
20
20
  }): Promise<string>;
@@ -19,31 +19,31 @@ const types_1 = require("../../types");
19
19
  const mp_1 = require("../mp");
20
20
  const common_2 = require("../../utils/common");
21
21
  const config_1 = require("../config");
22
- const fs_extra_1 = __importDefault(require("fs-extra"));
23
- async function buildH5App({ buildContext, i18nConfig, extraData, cals, buildTypeList = [common_1.BuildType.WEB], subAppCalsList, mode, devTool, runtime = types_1.RUNTIME.NONE, deployMode = types_1.DEPLOY_MODE.PREVIEW, ignoreInstall = false, cdnEndpoints, }) {
24
- var _a, _b, _c;
25
- const { projDir: buildDir, domain, materialLibs: dependencies, appId: appKey, isPrivateMode } = buildContext;
22
+ async function buildH5App({ appKey, buildDir, dependencies, i18nConfig, extraData, cals, buildTypeList = [common_1.BuildType.WEB], subAppCalsList, mode, devTool, runtime = types_1.RUNTIME.NONE, deployMode = types_1.DEPLOY_MODE.PREVIEW, ignoreInstall = false, domain = '', }) {
23
+ var _a, _b;
26
24
  try {
27
25
  const { materialsDir } = runtime === types_1.RUNTIME.CI ? (0, util_1.getCompileDirs)(appKey) : (0, util_1.getCompileDirs)('app');
28
26
  const h5BuildDir = path_1.default.join(buildDir, 'h5');
29
- if (buildTypeList.includes(common_1.BuildType.APP) ||
30
- buildTypeList.includes(common_1.BuildType.XPAGE_PC) ||
31
- buildTypeList.includes(common_1.BuildType.ADMIN_PORTAL)) {
32
- if (!cals.extra) {
33
- cals.extra = {};
34
- }
35
- cals.extra.historyType = types_1.HISTORY_TYPE.HASH;
36
- }
37
27
  const mainAppSerializeData = (0, common_2.processCals2WeappsData)(cals, dependencies);
38
28
  const subAppSerializeDataList = (subAppCalsList === null || subAppCalsList === void 0 ? void 0 : subAppCalsList.map((item) => (0, common_2.processCals2WeappsData)(item, dependencies))) || [];
29
+ const buildContext = {
30
+ projDir: buildDir,
31
+ appId: appKey,
32
+ isProduction: mode === common_1.WebpackModeType.PRODUCTION,
33
+ materialLibs: dependencies,
34
+ isMixMode: false,
35
+ mainAppData: mainAppSerializeData,
36
+ domain,
37
+ };
39
38
  const { allAppUsedComps } = (0, mp_1.handleUsedComponents)({
40
- buildContext: { ...buildContext, mainAppData: mainAppSerializeData },
39
+ buildContext,
41
40
  weapps: [mainAppSerializeData, ...subAppSerializeDataList],
41
+ materials: dependencies,
42
42
  });
43
43
  // 处理应用数据
44
44
  const mainAppData = (0, weapps_core_1.deserialize)(mainAppSerializeData);
45
45
  if (!mainAppData.extra) {
46
- mainAppData.extra = { domain };
46
+ mainAppData.extra = { domain: domain };
47
47
  }
48
48
  if (!((_a = mainAppData.extra) === null || _a === void 0 ? void 0 : _a.domain)) {
49
49
  mainAppData.extra.domain = domain;
@@ -88,7 +88,6 @@ async function buildH5App({ buildContext, i18nConfig, extraData, cals, buildType
88
88
  runtime,
89
89
  deployMode,
90
90
  _indexPage,
91
- isPrivateMode,
92
91
  });
93
92
  console.timeEnd(runGenerateTag);
94
93
  // // 构建 NPM 包
@@ -117,7 +116,6 @@ async function buildH5App({ buildContext, i18nConfig, extraData, cals, buildType
117
116
  devTool,
118
117
  publicPath,
119
118
  domain,
120
- cdnEndpoints,
121
119
  });
122
120
  await new Promise((resolve, reject) => {
123
121
  // 开始编译前清理一下 lowcode 内容
@@ -135,10 +133,6 @@ async function buildH5App({ buildContext, i18nConfig, extraData, cals, buildType
135
133
  }
136
134
  });
137
135
  });
138
- // 普通 web 模式,且非hash模式,根据页面生成多份入口
139
- if (!((_c = cals.extra) === null || _c === void 0 ? void 0 : _c.historyType) || cals.extra.historyType === types_1.HISTORY_TYPE.BROWSER) {
140
- await Promise.all((cals.items || []).map((page) => fs_extra_1.default.copy(path_1.default.resolve(h5BuildDir, webpack_2.OUTPUT_DIR, 'index.html'), path_1.default.resolve(h5BuildDir, webpack_2.OUTPUT_DIR, page.id, 'index.html'))));
141
- }
142
136
  return h5BuildDir;
143
137
  }
144
138
  catch (e) {
@@ -1,13 +1,11 @@
1
1
  import { IWebRuntimeAppData } from '@cloudbase/lowcode-generator/lib/weapps-core';
2
2
  import { BuildAppProps } from '../core/index';
3
- import { ICDN_ENDPOINTS_COFIG } from '../config';
4
3
  interface IWebpackCoreProps extends BuildAppProps {
5
4
  appBuildDir: string;
6
5
  mpConfig: any;
7
6
  mainAppData: IWebRuntimeAppData;
8
7
  subAppDataList: IWebRuntimeAppData[];
9
8
  assets: string[];
10
- cdnEndpoints?: ICDN_ENDPOINTS_COFIG;
11
9
  }
12
- export declare function runWebpackCore({ mainAppData, subAppDataList, appBuildDir, publicPath, mode, appKey, buildTypeList, mpConfig, assets, devTool, generateMpType, cdnEndpoints, }: IWebpackCoreProps): Promise<string>;
10
+ export declare function runWebpackCore({ mainAppData, subAppDataList, appBuildDir, publicPath, mode, appKey, buildTypeList, mpConfig, assets, devTool, generateMpType, }: IWebpackCoreProps): Promise<string>;
13
11
  export {};
@@ -4,7 +4,7 @@ exports.runWebpackCore = void 0;
4
4
  const common_1 = require("../types/common");
5
5
  const webpack_1 = require("../service/webpack");
6
6
  const generate_1 = require("./generate");
7
- async function runWebpackCore({ mainAppData, subAppDataList, appBuildDir, publicPath, mode = common_1.WebpackModeType.NONE, appKey, buildTypeList = [common_1.BuildType.WEB], mpConfig, assets = [], devTool = 'vite', generateMpType = common_1.GenerateMpType.APP, cdnEndpoints, }) {
7
+ async function runWebpackCore({ mainAppData, subAppDataList, appBuildDir, publicPath, mode = common_1.WebpackModeType.NONE, appKey, buildTypeList = [common_1.BuildType.WEB], mpConfig, assets = [], devTool = 'vite', generateMpType = common_1.GenerateMpType.APP, }) {
8
8
  console.time('runWebpackCore');
9
9
  console.time('webpackGenerate');
10
10
  const allAppDataList = subAppDataList.concat(mainAppData);
@@ -33,7 +33,6 @@ async function runWebpackCore({ mainAppData, subAppDataList, appBuildDir, public
33
33
  devTool,
34
34
  isBuildApp: buildTypeList.includes(common_1.BuildType.APP),
35
35
  buildTypeList,
36
- cdnEndpoints,
37
36
  });
38
37
  if ((0, common_1.buildAsWebByBuildType)(buildTypeList)) {
39
38
  if (mode !== common_1.WebpackModeType.PRODUCTION) {
@@ -3,9 +3,6 @@ import { IMaterialItem, IWeAppData, IMiniprogramPlugin } from '@cloudbase/lowcod
3
3
  * All build parameters and intermediate data to be share across processes
4
4
  */
5
5
  export interface IBuildContext {
6
- /**
7
- * 应用id
8
- */
9
6
  appId: string;
10
7
  domain: string;
11
8
  projDir: string;
@@ -17,5 +14,4 @@ export interface IBuildContext {
17
14
  miniprogramPlugins?: IMiniprogramPlugin[];
18
15
  debugMode?: boolean;
19
16
  isBrowserMpBuilder?: boolean;
20
- isPrivateMode?: boolean;
21
17
  }
@@ -1,15 +1,21 @@
1
- import { IWeAppData, IPlugin } from '@cloudbase/lowcode-generator/lib/weapps-core';
1
+ import { IMaterialItem, IWeAppData, IPlugin } from '@cloudbase/lowcode-generator/lib/weapps-core';
2
2
  import { IBuildContext } from './BuildContext';
3
3
  import { DEPLOY_MODE } from '../../types';
4
4
  import { BuildType, IAppUsedComp, IUsedComps } from '../types/common';
5
- export declare function generateWxMp({ buildContext, weapps, plugins, deployMode, options, buildTypeList, isBrowserMpBuilder, ignoreInstall, }: {
6
- buildContext: IBuildContext;
5
+ export declare function generateWxMp({ weapps, projDir, appId, domain, materials, plugins, isProduction, deployMode, extraData, isMixMode, options, buildTypeList, isBrowserMpBuilder, ignoreInstall, }: {
7
6
  weapps: IWeAppData[];
7
+ projDir: string;
8
+ appId: string;
9
+ domain: string;
10
+ materials: IMaterialItem[];
8
11
  plugins: IPlugin[];
12
+ isProduction: boolean;
9
13
  deployMode: DEPLOY_MODE;
14
+ extraData: any;
15
+ isMixMode: boolean;
10
16
  options: {
11
- mpAppId: string;
12
17
  resourceAppId?: string;
18
+ mpAppId?: string;
13
19
  isCrossAccount: boolean;
14
20
  };
15
21
  buildTypeList: BuildType[];
@@ -23,9 +29,10 @@ export declare function writeLowCodeFiles(appData: IWeAppData, outDir: string, c
23
29
  * TODO: 与 cals 里的实现进行整合
24
30
  * 关键点在于 appUsedComps 分组, 与 generic componen 的实现
25
31
  */
26
- export declare function handleUsedComponents({ buildContext, weapps }: {
32
+ export declare function handleUsedComponents({ buildContext, weapps, materials, }: {
27
33
  buildContext: IBuildContext;
28
34
  weapps: IWeAppData[];
35
+ materials: IMaterialItem[];
29
36
  }): {
30
37
  appUsedComps: IAppUsedComp[];
31
38
  allAppUsedComps: IUsedComps;
@@ -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({ buildContext, weapps, plugins, deployMode, options, buildTypeList, isBrowserMpBuilder = false, ignoreInstall = false, }) {
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
- const { allAppUsedComps } = handleUsedComponents({ buildContext, weapps });
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,复写 appId
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 !== cals_1.ECodeType.RENDERER)
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 !== cals_1.ECodeType.RENDERER)
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
- import { IBuildContext } from '../mp/BuildContext';
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({ buildContext, apps = [], miniprogramRoot, plugins = [], }) {
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 === null || target === void 0 ? void 0 : target.value) {
168
+ if (target && target.value) {
172
169
  temp[key] = target.value;
173
170
  }
174
171
  }
@@ -99,7 +99,7 @@ function generateDataBindMeta(bind) {
99
99
  }
100
100
  else {
101
101
  expr = value
102
- .replace(/^\w+./, `${isGlobal ? 'app' : '$page'}.${PREFIX_MAP[type]}.`)
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.OUTPUT_DIR = exports.PERSISTENT_DEPENDIENCES_MAP = void 0;
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, exports.OUTPUT_DIR),
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
- // 如果generatedFileContents[path.resolve(targetDir, 'package.json')]不存在,说明是不存在缓存文件,isPkgModify必须是true,才不会忽略install
459
- const isPkgModify = !generateFiles_1.generatedFileContents[path_1.default.resolve(targetDir, 'package.json')]
460
- ? true
461
- : generateFiles_1.generatedFileContents[path_1.default.resolve(targetDir, 'package.json')].modify;
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 installProcessOptions = {
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
- installprocess = cross_spawn_1.default.sync('yarn', [...addPackage, registry], installProcessOptions);
501
+ installProcess = cross_spawn_1.default.sync('yarn', [...addPackage, registry], installlProcessOptions);
499
502
  }
500
503
  else {
501
- installprocess = cross_spawn_1.default.sync('npm', ['install', packageName, ...npmOptions], installProcessOptions);
504
+ installProcess = cross_spawn_1.default.sync('npm', ['install', packageName, ...npmOptions], installlProcessOptions);
502
505
  }
503
- // TODO: 确认 process.status 语义来判断是否标识进程正常退出
504
- if (installprocess.status) {
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, options = { mobx: false, '@cloudbase/js-sdk': false }) {
517
- const { mobx = false, ['@cloudbase/js-sdk']: jsSDK = false } = options;
518
- if (mobx) {
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);
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
  }
@@ -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
- var _a;
71
- const generated = (_a = exports.generatedFileContents[outFile]) === null || _a === void 0 ? void 0 : _a.content;
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/lowcode-builder",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "description": "云开发 Tencent CloudBase Framework Low Code Plugin,将低码配置生成完整项目并一键部署云开发资源。",
5
5
  "author": "yhsunshining@gmail.com",
6
6
  "homepage": "https://github.com/TencentCloudBase/cloudbase-framework#readme",
@@ -38,8 +38,8 @@
38
38
  "url": "https://github.com/TencentCloudBase/cloudbase-framework/issues"
39
39
  },
40
40
  "dependencies": {
41
- "@cloudbase/cals": "^0.4.11",
42
- "@cloudbase/lowcode-generator": "^1.1.4",
41
+ "@cloudbase/cals": "^0.5.0",
42
+ "@cloudbase/lowcode-generator": "^1.1.5",
43
43
  "axios": "^0.21.0",
44
44
  "browserfs": "^1.4.3",
45
45
  "browserify-zlib": "^0.2.0",
@@ -72,7 +72,7 @@
72
72
  "@types/weixin-app": "^2.9.0",
73
73
  "cross-env": "^7.0.3",
74
74
  "csstype": "^2.6.10",
75
- "jest": "^26.0.1",
75
+ "jest": "^27.5.1",
76
76
  "ts-loader": "^8.3.0",
77
77
  "ts-node": "^10.4.0",
78
78
  "typescript": "^4.7.4",
@@ -461,7 +461,7 @@
461
461
  ></script>
462
462
  <script
463
463
  crossorigin
464
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.59a4c563eb076206c8bd.bundle.js"
464
+ src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.408037dbe5cfeca28aeb.bundle.js"
465
465
  ></script>
466
466
  </body>
467
467
  </html>