@modern-js/mwa-generator 3.0.3 → 3.0.5

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/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "3.0.3",
14
+ "version": "3.0.5",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "main": "./dist/index.js",
17
17
  "files": [
@@ -27,15 +27,15 @@
27
27
  "@types/node": "^14",
28
28
  "jest": "^27",
29
29
  "typescript": "^4",
30
- "@modern-js/entry-generator": "3.0.3",
31
- "@modern-js/generator-common": "3.0.3",
32
- "@modern-js/packages-generator": "3.0.3",
33
- "@modern-js/generator-utils": "3.0.3",
34
- "@modern-js/plugin-i18n": "2.1.0",
35
- "@modern-js/dependence-generator": "3.0.3",
36
- "@modern-js/base-generator": "3.0.3",
37
- "@scripts/jest-config": "2.1.0",
38
- "@scripts/build": "2.1.0"
30
+ "@modern-js/dependence-generator": "3.0.5",
31
+ "@modern-js/entry-generator": "3.0.5",
32
+ "@modern-js/generator-utils": "3.0.5",
33
+ "@modern-js/packages-generator": "3.0.5",
34
+ "@modern-js/plugin-i18n": "2.3.0",
35
+ "@modern-js/base-generator": "3.0.5",
36
+ "@modern-js/generator-common": "3.0.5",
37
+ "@scripts/build": "2.3.0",
38
+ "@scripts/jest-config": "2.3.0"
39
39
  },
40
40
  "sideEffects": false,
41
41
  "publishConfig": {
package/src/index.ts ADDED
@@ -0,0 +1,271 @@
1
+ import path from 'path';
2
+ import { GeneratorContext, GeneratorCore } from '@modern-js/codesmith';
3
+ import { AppAPI } from '@modern-js/codesmith-api-app';
4
+ import { JsonAPI } from '@modern-js/codesmith-api-json';
5
+ import {
6
+ i18n as commonI18n,
7
+ BaseGenerator,
8
+ Solution,
9
+ getMWASchema,
10
+ Language,
11
+ EntryGenerator,
12
+ PackagesGenerator,
13
+ } from '@modern-js/generator-common';
14
+ import {
15
+ getMWAProjectPath,
16
+ getAllPackages,
17
+ i18n as utilsI18n,
18
+ validatePackageName,
19
+ validatePackagePath,
20
+ getPackageManagerText,
21
+ getModernVersion,
22
+ } from '@modern-js/generator-utils';
23
+ import { i18n, localeKeys } from './locale';
24
+
25
+ const getGeneratorPath = (generator: string, distTag: string) => {
26
+ if (process.env.CODESMITH_ENV === 'development') {
27
+ return path.dirname(require.resolve(generator));
28
+ } else if (distTag) {
29
+ return `${generator}@${distTag}`;
30
+ }
31
+ return generator;
32
+ };
33
+
34
+ export const handleTemplateFile = async (
35
+ context: GeneratorContext,
36
+ generator: GeneratorCore,
37
+ appApi: AppAPI,
38
+ ) => {
39
+ const jsonAPI = new JsonAPI(generator);
40
+
41
+ const { isMonorepoSubProject, isTest, projectDir = '' } = context.config;
42
+
43
+ const { outputPath } = generator;
44
+
45
+ let packages: string[] = [];
46
+
47
+ if (isMonorepoSubProject) {
48
+ try {
49
+ packages = getAllPackages(outputPath);
50
+ } catch (e) {
51
+ generator.logger.debug('get all packages error', e);
52
+ generator.logger.warn(i18n.t(localeKeys.get_packages_error));
53
+ }
54
+ }
55
+
56
+ context.config = {
57
+ ...context.config,
58
+ isMwa: true,
59
+ isEmptySrc: true,
60
+ };
61
+
62
+ const { hasPlugin, generatorPlugin, ...extra } = context.config;
63
+
64
+ let ans: Record<string, unknown> = {};
65
+
66
+ if (hasPlugin) {
67
+ await generatorPlugin.installPlugins(Solution.MWA, extra);
68
+ const schema = generatorPlugin.getInputSchema();
69
+ const inputValue = generatorPlugin.getInputValue();
70
+ context.config.gitCommitMessage =
71
+ generatorPlugin.getGitMessage() || context.config.gitCommitMessage;
72
+ ans = await appApi.getInputBySchema(
73
+ schema,
74
+ 'formily',
75
+ { ...context.config, ...inputValue },
76
+ {
77
+ packageName: input =>
78
+ validatePackageName(input as string, packages, {
79
+ isMonorepoSubProject,
80
+ }),
81
+ packagePath: input =>
82
+ validatePackagePath(
83
+ input as string,
84
+ path.join(process.cwd(), projectDir),
85
+ {
86
+ isTest,
87
+ isMwa: true,
88
+ },
89
+ ),
90
+ },
91
+ {},
92
+ );
93
+ } else {
94
+ ans = await appApi.getInputBySchemaFunc(
95
+ getMWASchema,
96
+ { ...context.config },
97
+ {
98
+ packageName: input =>
99
+ validatePackageName(input as string, packages, {
100
+ isMonorepoSubProject,
101
+ }),
102
+ packagePath: input =>
103
+ validatePackagePath(
104
+ input as string,
105
+ path.join(process.cwd(), projectDir),
106
+ { isTest, isMwa: true },
107
+ ),
108
+ },
109
+ );
110
+ }
111
+
112
+ const modernVersion = await getModernVersion(
113
+ Solution.MWA,
114
+ context.config.registry,
115
+ context.config.distTag,
116
+ );
117
+
118
+ generator.logger.debug(`inputData=${JSON.stringify(ans)}`, ans);
119
+
120
+ const { packageName, packagePath, language } = ans;
121
+
122
+ const projectPath = getMWAProjectPath(
123
+ packagePath as string,
124
+ isMonorepoSubProject,
125
+ isTest,
126
+ );
127
+
128
+ const dirname = path.basename(generator.outputPath);
129
+
130
+ await appApi.runSubGenerator(
131
+ getGeneratorPath(BaseGenerator, context.config.distTag),
132
+ undefined,
133
+ { ...context.config, hasPlugin: false },
134
+ );
135
+
136
+ await appApi.forgeTemplate(
137
+ 'templates/base-template/**/*',
138
+ undefined,
139
+ resourceKey =>
140
+ resourceKey
141
+ .replace('templates/base-template/', projectPath)
142
+ .replace('.handlebars', ''),
143
+ {
144
+ name: packageName || dirname,
145
+ isMonorepoSubProject,
146
+ modernVersion,
147
+ },
148
+ );
149
+
150
+ if (language === Language.TS) {
151
+ await jsonAPI.update(
152
+ context.materials.default.get(path.join(projectPath, 'package.json')),
153
+ {
154
+ query: {},
155
+ update: {
156
+ $set: {
157
+ 'devDependencies.typescript': '~4.9.4',
158
+ 'devDependencies.@types/jest': '~29.2.4',
159
+ 'devDependencies.@types/node': '~16.11.7',
160
+ 'devDependencies.@types/react': '~18.0.26',
161
+ 'devDependencies.@types/react-dom': '~18.0.10',
162
+ },
163
+ },
164
+ },
165
+ );
166
+
167
+ await appApi.forgeTemplate(
168
+ 'templates/ts-template/**/*',
169
+ undefined,
170
+ resourceKey =>
171
+ resourceKey
172
+ .replace('templates/ts-template/', projectPath)
173
+ .replace('.handlebars', ''),
174
+ );
175
+ } else {
176
+ await appApi.forgeTemplate(
177
+ 'templates/js-template/**/*',
178
+ undefined,
179
+ resourceKey =>
180
+ resourceKey
181
+ .replace('templates/js-template/', projectPath)
182
+ .replace('.handlebars', ''),
183
+ );
184
+ }
185
+
186
+ await appApi.runSubGenerator(
187
+ getGeneratorPath(EntryGenerator, context.config.distTag),
188
+ `./${projectPath}`,
189
+ {
190
+ ...context.config,
191
+ isSubGenerator: true,
192
+ },
193
+ );
194
+
195
+ if (isMonorepoSubProject) {
196
+ await appApi.updateWorkspace({
197
+ name: packagePath as string,
198
+ path: projectPath,
199
+ });
200
+ }
201
+
202
+ const { packagesInfo } = context.config;
203
+ if (packagesInfo && Object.keys(packagesInfo).length > 0) {
204
+ await appApi.runSubGenerator(
205
+ getGeneratorPath(PackagesGenerator, context.config.distTag),
206
+ undefined,
207
+ context.config,
208
+ );
209
+ }
210
+
211
+ return { projectPath };
212
+ };
213
+
214
+ export default async (context: GeneratorContext, generator: GeneratorCore) => {
215
+ const appApi = new AppAPI(context, generator);
216
+
217
+ const { locale, successInfo } = context.config;
218
+ commonI18n.changeLanguage({ locale });
219
+ utilsI18n.changeLanguage({ locale });
220
+ appApi.i18n.changeLanguage({ locale });
221
+ i18n.changeLanguage({ locale });
222
+
223
+ if (!(await appApi.checkEnvironment())) {
224
+ // eslint-disable-next-line no-process-exit
225
+ process.exit(1);
226
+ }
227
+
228
+ generator.logger.debug(`start run @modern-js/mwa-generator`);
229
+ generator.logger.debug(`context=${JSON.stringify(context)}`);
230
+ generator.logger.debug(`context.data=${JSON.stringify(context.data)}`);
231
+
232
+ let projectPath = '';
233
+ try {
234
+ ({ projectPath } = await handleTemplateFile(context, generator, appApi));
235
+ } catch (e) {
236
+ generator.logger.error(e);
237
+ // eslint-disable-next-line no-process-exit
238
+ process.exit(1);
239
+ }
240
+
241
+ if (context.handleForged) {
242
+ await context.handleForged(
243
+ Solution.MWA,
244
+ context,
245
+ context.config.hasPlugin,
246
+ projectPath,
247
+ );
248
+ }
249
+
250
+ try {
251
+ await appApi.runGitAndInstall(context.config.gitCommitMessage);
252
+ } catch (e) {
253
+ generator.logger.error(e);
254
+ // eslint-disable-next-line no-process-exit
255
+ process.exit(1);
256
+ }
257
+
258
+ const { packageManager } = context.config;
259
+
260
+ if (successInfo) {
261
+ appApi.showSuccessInfo(successInfo);
262
+ } else {
263
+ appApi.showSuccessInfo(
264
+ i18n.t(localeKeys.success, {
265
+ packageManager: getPackageManagerText(packageManager),
266
+ }),
267
+ );
268
+ }
269
+
270
+ generator.logger.debug(`forge @modern-js/mwa-generator succeed `);
271
+ };
@@ -16,7 +16,7 @@
16
16
  },
17
17
  {{#unless isMonorepoSubProject}}
18
18
  "engines": {
19
- "node": ">=14.17.6"
19
+ "node": ">=16.18.1"
20
20
  },
21
21
  "lint-staged": {
22
22
  "*.{ts,tsx}": [