@modern-js/generator-utils 3.0.0-beta.0 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/js/modern/index.js +5 -32
- package/dist/js/modern/utils/package.js +7 -21
- package/dist/js/modern/utils/strip-ansi.js +0 -2
- package/dist/js/node/index.js +5 -53
- package/dist/js/node/locale/index.js +0 -4
- package/dist/js/node/utils/index.js +0 -4
- package/dist/js/node/utils/package.js +5 -26
- package/dist/js/node/utils/strip-ansi.js +0 -3
- package/dist/types/utils/package.d.ts +0 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @modern-js/generator-utils
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.1
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- dda38c9: chore: v2
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [92f0ead]
|
|
12
|
+
- Updated dependencies [edd1cfb1af]
|
|
13
|
+
- Updated dependencies [cc971eabfc]
|
|
14
|
+
- Updated dependencies [5b9049f]
|
|
15
|
+
- Updated dependencies [92004d1]
|
|
16
|
+
- Updated dependencies [b8bbe036c7]
|
|
17
|
+
- Updated dependencies [d5a31df781]
|
|
18
|
+
- Updated dependencies [dda38c9]
|
|
19
|
+
- Updated dependencies [3bbea92b2a]
|
|
20
|
+
- Updated dependencies [abf3421]
|
|
21
|
+
- Updated dependencies [543be9558e]
|
|
22
|
+
- Updated dependencies [14b712d]
|
|
23
|
+
- @modern-js/utils@2.0.0-beta.1
|
|
24
|
+
- @modern-js/plugin-i18n@2.0.0-beta.1
|
|
25
|
+
- @modern-js/generator-common@3.0.0-beta.1
|
|
26
|
+
|
|
3
27
|
## 3.0.0-beta.0
|
|
4
28
|
|
|
5
29
|
### Major Changes
|
package/dist/js/modern/index.js
CHANGED
|
@@ -10,43 +10,33 @@ export { i18n } from "./locale";
|
|
|
10
10
|
export async function getPackageVersion(packageName, registry) {
|
|
11
11
|
const spinner = ora('Loading...').start();
|
|
12
12
|
spinner.color = 'yellow';
|
|
13
|
-
|
|
14
13
|
if (await canUsePnpm()) {
|
|
15
14
|
const args = ['info', packageName, 'version'];
|
|
16
|
-
|
|
17
15
|
if (registry) {
|
|
18
16
|
args.push(`--registry=${registry}`);
|
|
19
17
|
}
|
|
20
|
-
|
|
21
18
|
const result = await execa('pnpm', args);
|
|
22
19
|
spinner.stop();
|
|
23
20
|
return stripAnsi(result.stdout);
|
|
24
21
|
}
|
|
25
|
-
|
|
26
22
|
if (await canUseYarn()) {
|
|
27
23
|
const args = ['info', packageName, 'version', '--silent'];
|
|
28
|
-
|
|
29
24
|
if (registry) {
|
|
30
25
|
args.push(`--registry=${registry}`);
|
|
31
26
|
}
|
|
32
|
-
|
|
33
27
|
const result = await execa('yarn', args);
|
|
34
28
|
spinner.stop();
|
|
35
29
|
return stripAnsi(result.stdout);
|
|
36
30
|
}
|
|
37
|
-
|
|
38
31
|
if (await canUseNpm()) {
|
|
39
32
|
const args = ['view', packageName, 'version'];
|
|
40
|
-
|
|
41
33
|
if (registry) {
|
|
42
34
|
args.push(`--registry=${registry}`);
|
|
43
35
|
}
|
|
44
|
-
|
|
45
36
|
const result = await execa('npm', args);
|
|
46
37
|
spinner.stop();
|
|
47
38
|
return stripAnsi(result.stdout);
|
|
48
39
|
}
|
|
49
|
-
|
|
50
40
|
spinner.stop();
|
|
51
41
|
throw new Error('not found npm, please install npm before');
|
|
52
42
|
}
|
|
@@ -63,36 +53,28 @@ export async function getModernPluginVersion(solution, packageName, options = {
|
|
|
63
53
|
registry,
|
|
64
54
|
distTag
|
|
65
55
|
} = options;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const version = await getPackageVersion(`${packageName}@${distTag}`, registry);
|
|
56
|
+
const getLatetPluginVersion = async tag => {
|
|
57
|
+
const version = await getPackageVersion(`${packageName}@${tag || distTag}`, registry);
|
|
69
58
|
return version;
|
|
70
59
|
};
|
|
71
|
-
|
|
72
60
|
if (!packageName.startsWith('@modern-js') || packageName.includes('electron') || packageName.includes('codesmith') || packageName.includes('easy-form') || packageName.startsWith('@modern-js-reduck')) {
|
|
73
|
-
return getLatetPluginVersion();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
61
|
+
return getLatetPluginVersion('latest');
|
|
62
|
+
}
|
|
63
|
+
// get project solution version
|
|
77
64
|
const pkgPath = path.join(require.resolve(SolutionToolsMap[solution], {
|
|
78
65
|
paths: [cwd]
|
|
79
66
|
}), '../../../../', 'package.json');
|
|
80
|
-
|
|
81
67
|
if (fs.existsSync(pkgPath)) {
|
|
82
68
|
const pkgInfo = fs.readJSONSync(pkgPath);
|
|
83
69
|
const modernVersion = pkgInfo.version;
|
|
84
|
-
|
|
85
70
|
if (typeof modernVersion !== 'string') {
|
|
86
71
|
return getLatetPluginVersion();
|
|
87
72
|
}
|
|
88
|
-
|
|
89
73
|
if (semver.lt(modernVersion, '1.15.0')) {
|
|
90
74
|
return getLatetPluginVersion();
|
|
91
75
|
}
|
|
92
|
-
|
|
93
76
|
return getAvailableVersion(packageName, modernVersion, registry);
|
|
94
77
|
}
|
|
95
|
-
|
|
96
78
|
return getLatetPluginVersion();
|
|
97
79
|
}
|
|
98
80
|
export function getPackageManagerText(packageManager) {
|
|
@@ -113,7 +95,6 @@ export function validatePackageName(value, packages, options) {
|
|
|
113
95
|
const {
|
|
114
96
|
isMonorepoSubProject
|
|
115
97
|
} = options;
|
|
116
|
-
|
|
117
98
|
if (isMonorepoSubProject && packages.includes(value)) {
|
|
118
99
|
return {
|
|
119
100
|
success: false,
|
|
@@ -122,7 +103,6 @@ export function validatePackageName(value, packages, options) {
|
|
|
122
103
|
})
|
|
123
104
|
};
|
|
124
105
|
}
|
|
125
|
-
|
|
126
106
|
return {
|
|
127
107
|
success: true
|
|
128
108
|
};
|
|
@@ -134,15 +114,12 @@ export function validatePackagePath(value, projectDir, options) {
|
|
|
134
114
|
isTest
|
|
135
115
|
} = options || {};
|
|
136
116
|
let dir = 'apps';
|
|
137
|
-
|
|
138
117
|
if (isMwa && isTest) {
|
|
139
118
|
dir = 'examples';
|
|
140
119
|
} else {
|
|
141
120
|
dir = isPublic ? 'packages' : 'features';
|
|
142
121
|
}
|
|
143
|
-
|
|
144
122
|
const packageDir = path.resolve(projectDir || '', dir, value);
|
|
145
|
-
|
|
146
123
|
if (fs.existsSync(packageDir)) {
|
|
147
124
|
return {
|
|
148
125
|
success: false,
|
|
@@ -151,7 +128,6 @@ export function validatePackagePath(value, projectDir, options) {
|
|
|
151
128
|
})
|
|
152
129
|
};
|
|
153
130
|
}
|
|
154
|
-
|
|
155
131
|
return {
|
|
156
132
|
success: true
|
|
157
133
|
};
|
|
@@ -160,17 +136,14 @@ export function getModuleProjectPath(packagePath, isMonorepoSubProject, isPublic
|
|
|
160
136
|
if (isLocalPackages && packagePath) {
|
|
161
137
|
return `${packagePath}/`;
|
|
162
138
|
}
|
|
163
|
-
|
|
164
139
|
if (isMonorepoSubProject && packagePath) {
|
|
165
140
|
return `${isPublic ? 'packages' : 'features'}/${packagePath}/`;
|
|
166
141
|
}
|
|
167
|
-
|
|
168
142
|
return '';
|
|
169
143
|
}
|
|
170
144
|
export function getMWAProjectPath(packagePath, isMonorepoSubProject, isTest = false) {
|
|
171
145
|
if (isMonorepoSubProject && packagePath) {
|
|
172
146
|
return `${isTest ? 'examples' : 'apps'}/${packagePath}/`;
|
|
173
147
|
}
|
|
174
|
-
|
|
175
148
|
return '';
|
|
176
149
|
}
|
|
@@ -1,88 +1,74 @@
|
|
|
1
|
-
import { canUseNpm, execa, logger, semver, stripAnsi } from '@modern-js/utils';
|
|
1
|
+
import { canUseNpm, execa, logger, semver, stripAnsi } from '@modern-js/utils';
|
|
2
2
|
|
|
3
|
+
// 判断包是否存在
|
|
3
4
|
export async function isPackageExist(packageName, registry) {
|
|
4
5
|
if (await canUseNpm()) {
|
|
5
6
|
const args = ['view', packageName, 'version'];
|
|
6
|
-
|
|
7
7
|
if (registry) {
|
|
8
8
|
args.push(`--registry=${registry}`);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
const result = await execa('npm', args);
|
|
12
11
|
return stripAnsi(result.stdout);
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
throw new Error('not found npm, please install npm before');
|
|
16
|
-
}
|
|
14
|
+
}
|
|
17
15
|
|
|
16
|
+
// 判断包是否已经废弃
|
|
18
17
|
export async function isPackageDeprecated(packageName, registry) {
|
|
19
18
|
if (await canUseNpm()) {
|
|
20
19
|
const args = ['view', packageName, 'deprecated'];
|
|
21
|
-
|
|
22
20
|
if (registry) {
|
|
23
21
|
args.push(`--registry=${registry}`);
|
|
24
22
|
}
|
|
25
|
-
|
|
26
23
|
const result = await execa('npm', args);
|
|
27
24
|
return stripAnsi(result.stdout);
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
throw new Error('not found npm, please install npm before');
|
|
31
|
-
}
|
|
27
|
+
}
|
|
32
28
|
|
|
29
|
+
// 降低包小版本号
|
|
33
30
|
export function semverDecrease(version) {
|
|
34
31
|
const versionObj = semver.parse(version, {
|
|
35
32
|
loose: true
|
|
36
33
|
});
|
|
37
|
-
|
|
38
34
|
if (!versionObj) {
|
|
39
35
|
throw new Error(`Version ${version} is not valid semver`);
|
|
40
36
|
}
|
|
41
|
-
|
|
42
37
|
versionObj.build = [];
|
|
43
38
|
versionObj.prerelease = [];
|
|
44
39
|
versionObj.patch--;
|
|
45
40
|
const result = versionObj.format();
|
|
46
|
-
|
|
47
41
|
if (!semver.valid(result)) {
|
|
48
42
|
logger.debug(`Version ${result} is not valid semver`);
|
|
49
43
|
return version;
|
|
50
44
|
}
|
|
51
|
-
|
|
52
45
|
return result;
|
|
53
46
|
}
|
|
47
|
+
|
|
54
48
|
/**
|
|
55
49
|
* 插件存在 hotfix 版本,从 tools 版本号向上找当前插件版本号
|
|
56
50
|
* tools 存在 hotfix 版本,从 tools 版本号向下找当前插件版本号
|
|
57
51
|
* 限制只在当前小版本号范围内寻找
|
|
58
52
|
*/
|
|
59
|
-
|
|
60
53
|
export async function getAvailableVersion(packageName, currentVersion, registry) {
|
|
61
54
|
let times = 5;
|
|
62
55
|
let version = currentVersion;
|
|
63
|
-
|
|
64
56
|
while (times) {
|
|
65
57
|
if (!(await isPackageExist(`${packageName}@${version}`, registry)) || (await isPackageDeprecated(`${packageName}@${version}`, registry))) {
|
|
66
58
|
version = semver.inc(version, 'patch');
|
|
67
59
|
times--;
|
|
68
60
|
continue;
|
|
69
61
|
}
|
|
70
|
-
|
|
71
62
|
return version;
|
|
72
63
|
}
|
|
73
|
-
|
|
74
64
|
times = 5;
|
|
75
|
-
|
|
76
65
|
while (times) {
|
|
77
66
|
version = semverDecrease(version);
|
|
78
|
-
|
|
79
67
|
if (!(await isPackageExist(`${packageName}@${version}`, registry)) || (await isPackageDeprecated(`${packageName}@${version}`, registry))) {
|
|
80
68
|
times--;
|
|
81
69
|
continue;
|
|
82
70
|
}
|
|
83
|
-
|
|
84
71
|
return version;
|
|
85
72
|
}
|
|
86
|
-
|
|
87
73
|
return currentVersion;
|
|
88
74
|
}
|
|
@@ -4,11 +4,9 @@ function ansiRegex({
|
|
|
4
4
|
const pattern = ['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
|
|
5
5
|
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
6
6
|
}
|
|
7
|
-
|
|
8
7
|
export function stripAnsi(string) {
|
|
9
8
|
if (typeof string !== 'string') {
|
|
10
9
|
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
return string.replace(ansiRegex(), '');
|
|
14
12
|
}
|
package/dist/js/node/index.js
CHANGED
|
@@ -104,21 +104,13 @@ Object.defineProperty(exports, "semver", {
|
|
|
104
104
|
});
|
|
105
105
|
exports.validatePackageName = validatePackageName;
|
|
106
106
|
exports.validatePackagePath = validatePackagePath;
|
|
107
|
-
|
|
108
107
|
var _path = _interopRequireDefault(require("path"));
|
|
109
|
-
|
|
110
108
|
var _utils = require("@modern-js/utils");
|
|
111
|
-
|
|
112
109
|
var _generatorCommon = require("@modern-js/generator-common");
|
|
113
|
-
|
|
114
110
|
var _stripAnsi = require("./utils/strip-ansi");
|
|
115
|
-
|
|
116
111
|
var _locale = require("./locale");
|
|
117
|
-
|
|
118
112
|
var _package = require("./utils/package");
|
|
119
|
-
|
|
120
113
|
var _utils2 = require("./utils");
|
|
121
|
-
|
|
122
114
|
Object.keys(_utils2).forEach(function (key) {
|
|
123
115
|
if (key === "default" || key === "__esModule") return;
|
|
124
116
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -130,59 +122,45 @@ Object.keys(_utils2).forEach(function (key) {
|
|
|
130
122
|
}
|
|
131
123
|
});
|
|
132
124
|
});
|
|
133
|
-
|
|
134
125
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
135
|
-
|
|
136
126
|
async function getPackageVersion(packageName, registry) {
|
|
137
127
|
const spinner = (0, _utils.ora)('Loading...').start();
|
|
138
128
|
spinner.color = 'yellow';
|
|
139
|
-
|
|
140
129
|
if (await (0, _utils.canUsePnpm)()) {
|
|
141
130
|
const args = ['info', packageName, 'version'];
|
|
142
|
-
|
|
143
131
|
if (registry) {
|
|
144
132
|
args.push(`--registry=${registry}`);
|
|
145
133
|
}
|
|
146
|
-
|
|
147
134
|
const result = await (0, _utils.execa)('pnpm', args);
|
|
148
135
|
spinner.stop();
|
|
149
136
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
150
137
|
}
|
|
151
|
-
|
|
152
138
|
if (await (0, _utils.canUseYarn)()) {
|
|
153
139
|
const args = ['info', packageName, 'version', '--silent'];
|
|
154
|
-
|
|
155
140
|
if (registry) {
|
|
156
141
|
args.push(`--registry=${registry}`);
|
|
157
142
|
}
|
|
158
|
-
|
|
159
143
|
const result = await (0, _utils.execa)('yarn', args);
|
|
160
144
|
spinner.stop();
|
|
161
145
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
162
146
|
}
|
|
163
|
-
|
|
164
147
|
if (await (0, _utils.canUseNpm)()) {
|
|
165
148
|
const args = ['view', packageName, 'version'];
|
|
166
|
-
|
|
167
149
|
if (registry) {
|
|
168
150
|
args.push(`--registry=${registry}`);
|
|
169
151
|
}
|
|
170
|
-
|
|
171
152
|
const result = await (0, _utils.execa)('npm', args);
|
|
172
153
|
spinner.stop();
|
|
173
154
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
174
155
|
}
|
|
175
|
-
|
|
176
156
|
spinner.stop();
|
|
177
157
|
throw new Error('not found npm, please install npm before');
|
|
178
158
|
}
|
|
179
|
-
|
|
180
159
|
async function getModernVersion(solution, registry, distTag = 'latest') {
|
|
181
160
|
const dep = _generatorCommon.SolutionToolsMap[solution];
|
|
182
161
|
const modernVersion = await getPackageVersion(`${dep}@${distTag}`, registry);
|
|
183
162
|
return modernVersion;
|
|
184
163
|
}
|
|
185
|
-
|
|
186
164
|
async function getModernPluginVersion(solution, packageName, options = {
|
|
187
165
|
distTag: 'latest'
|
|
188
166
|
}) {
|
|
@@ -191,63 +169,48 @@ async function getModernPluginVersion(solution, packageName, options = {
|
|
|
191
169
|
registry,
|
|
192
170
|
distTag
|
|
193
171
|
} = options;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const version = await getPackageVersion(`${packageName}@${distTag}`, registry);
|
|
172
|
+
const getLatetPluginVersion = async tag => {
|
|
173
|
+
const version = await getPackageVersion(`${packageName}@${tag || distTag}`, registry);
|
|
197
174
|
return version;
|
|
198
175
|
};
|
|
199
|
-
|
|
200
176
|
if (!packageName.startsWith('@modern-js') || packageName.includes('electron') || packageName.includes('codesmith') || packageName.includes('easy-form') || packageName.startsWith('@modern-js-reduck')) {
|
|
201
|
-
return getLatetPluginVersion();
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
177
|
+
return getLatetPluginVersion('latest');
|
|
178
|
+
}
|
|
179
|
+
// get project solution version
|
|
205
180
|
const pkgPath = _path.default.join(require.resolve(_generatorCommon.SolutionToolsMap[solution], {
|
|
206
181
|
paths: [cwd]
|
|
207
182
|
}), '../../../../', 'package.json');
|
|
208
|
-
|
|
209
183
|
if (_utils.fs.existsSync(pkgPath)) {
|
|
210
184
|
const pkgInfo = _utils.fs.readJSONSync(pkgPath);
|
|
211
|
-
|
|
212
185
|
const modernVersion = pkgInfo.version;
|
|
213
|
-
|
|
214
186
|
if (typeof modernVersion !== 'string') {
|
|
215
187
|
return getLatetPluginVersion();
|
|
216
188
|
}
|
|
217
|
-
|
|
218
189
|
if (_utils.semver.lt(modernVersion, '1.15.0')) {
|
|
219
190
|
return getLatetPluginVersion();
|
|
220
191
|
}
|
|
221
|
-
|
|
222
192
|
return (0, _package.getAvailableVersion)(packageName, modernVersion, registry);
|
|
223
193
|
}
|
|
224
|
-
|
|
225
194
|
return getLatetPluginVersion();
|
|
226
195
|
}
|
|
227
|
-
|
|
228
196
|
function getPackageManagerText(packageManager) {
|
|
229
197
|
return packageManager === 'yarn' ? 'yarn' : `${packageManager} run`;
|
|
230
198
|
}
|
|
231
|
-
|
|
232
199
|
function isTsProject(appDir) {
|
|
233
200
|
return _utils.fs.existsSync(_path.default.join(appDir, 'tsconfig.json'));
|
|
234
201
|
}
|
|
235
|
-
|
|
236
202
|
async function getPackageObj(context) {
|
|
237
203
|
const pkgStr = (await context.materials.default.get(`package.json`).value()).content;
|
|
238
204
|
return JSON.parse(pkgStr);
|
|
239
205
|
}
|
|
240
|
-
|
|
241
206
|
function getAllPackages(appDir) {
|
|
242
207
|
const packages = (0, _utils.getMonorepoPackages)(appDir);
|
|
243
208
|
return packages.map(pkg => pkg.name);
|
|
244
209
|
}
|
|
245
|
-
|
|
246
210
|
function validatePackageName(value, packages, options) {
|
|
247
211
|
const {
|
|
248
212
|
isMonorepoSubProject
|
|
249
213
|
} = options;
|
|
250
|
-
|
|
251
214
|
if (isMonorepoSubProject && packages.includes(value)) {
|
|
252
215
|
return {
|
|
253
216
|
success: false,
|
|
@@ -256,12 +219,10 @@ function validatePackageName(value, packages, options) {
|
|
|
256
219
|
})
|
|
257
220
|
};
|
|
258
221
|
}
|
|
259
|
-
|
|
260
222
|
return {
|
|
261
223
|
success: true
|
|
262
224
|
};
|
|
263
225
|
}
|
|
264
|
-
|
|
265
226
|
function validatePackagePath(value, projectDir, options) {
|
|
266
227
|
const {
|
|
267
228
|
isMwa,
|
|
@@ -269,15 +230,12 @@ function validatePackagePath(value, projectDir, options) {
|
|
|
269
230
|
isTest
|
|
270
231
|
} = options || {};
|
|
271
232
|
let dir = 'apps';
|
|
272
|
-
|
|
273
233
|
if (isMwa && isTest) {
|
|
274
234
|
dir = 'examples';
|
|
275
235
|
} else {
|
|
276
236
|
dir = isPublic ? 'packages' : 'features';
|
|
277
237
|
}
|
|
278
|
-
|
|
279
238
|
const packageDir = _path.default.resolve(projectDir || '', dir, value);
|
|
280
|
-
|
|
281
239
|
if (_utils.fs.existsSync(packageDir)) {
|
|
282
240
|
return {
|
|
283
241
|
success: false,
|
|
@@ -286,28 +244,22 @@ function validatePackagePath(value, projectDir, options) {
|
|
|
286
244
|
})
|
|
287
245
|
};
|
|
288
246
|
}
|
|
289
|
-
|
|
290
247
|
return {
|
|
291
248
|
success: true
|
|
292
249
|
};
|
|
293
250
|
}
|
|
294
|
-
|
|
295
251
|
function getModuleProjectPath(packagePath, isMonorepoSubProject, isPublic, isLocalPackages) {
|
|
296
252
|
if (isLocalPackages && packagePath) {
|
|
297
253
|
return `${packagePath}/`;
|
|
298
254
|
}
|
|
299
|
-
|
|
300
255
|
if (isMonorepoSubProject && packagePath) {
|
|
301
256
|
return `${isPublic ? 'packages' : 'features'}/${packagePath}/`;
|
|
302
257
|
}
|
|
303
|
-
|
|
304
258
|
return '';
|
|
305
259
|
}
|
|
306
|
-
|
|
307
260
|
function getMWAProjectPath(packagePath, isMonorepoSubProject, isTest = false) {
|
|
308
261
|
if (isMonorepoSubProject && packagePath) {
|
|
309
262
|
return `${isTest ? 'examples' : 'apps'}/${packagePath}/`;
|
|
310
263
|
}
|
|
311
|
-
|
|
312
264
|
return '';
|
|
313
265
|
}
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.localeKeys = exports.i18n = void 0;
|
|
7
|
-
|
|
8
7
|
var _pluginI18n = require("@modern-js/plugin-i18n");
|
|
9
|
-
|
|
10
8
|
var _zh = require("./zh");
|
|
11
|
-
|
|
12
9
|
var _en = require("./en");
|
|
13
|
-
|
|
14
10
|
const i18n = new _pluginI18n.I18n();
|
|
15
11
|
exports.i18n = i18n;
|
|
16
12
|
const localeKeys = i18n.init('zh', {
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _stripAnsi = require("./strip-ansi");
|
|
8
|
-
|
|
9
7
|
Object.keys(_stripAnsi).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _stripAnsi[key]) return;
|
|
@@ -16,9 +14,7 @@ Object.keys(_stripAnsi).forEach(function (key) {
|
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _package = require("./package");
|
|
21
|
-
|
|
22
18
|
Object.keys(_package).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _package[key]) return;
|
|
@@ -7,97 +7,76 @@ exports.getAvailableVersion = getAvailableVersion;
|
|
|
7
7
|
exports.isPackageDeprecated = isPackageDeprecated;
|
|
8
8
|
exports.isPackageExist = isPackageExist;
|
|
9
9
|
exports.semverDecrease = semverDecrease;
|
|
10
|
-
|
|
11
10
|
var _utils = require("@modern-js/utils");
|
|
12
|
-
|
|
13
11
|
// 判断包是否存在
|
|
14
12
|
async function isPackageExist(packageName, registry) {
|
|
15
13
|
if (await (0, _utils.canUseNpm)()) {
|
|
16
14
|
const args = ['view', packageName, 'version'];
|
|
17
|
-
|
|
18
15
|
if (registry) {
|
|
19
16
|
args.push(`--registry=${registry}`);
|
|
20
17
|
}
|
|
21
|
-
|
|
22
18
|
const result = await (0, _utils.execa)('npm', args);
|
|
23
19
|
return (0, _utils.stripAnsi)(result.stdout);
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
throw new Error('not found npm, please install npm before');
|
|
27
|
-
}
|
|
28
|
-
|
|
22
|
+
}
|
|
29
23
|
|
|
24
|
+
// 判断包是否已经废弃
|
|
30
25
|
async function isPackageDeprecated(packageName, registry) {
|
|
31
26
|
if (await (0, _utils.canUseNpm)()) {
|
|
32
27
|
const args = ['view', packageName, 'deprecated'];
|
|
33
|
-
|
|
34
28
|
if (registry) {
|
|
35
29
|
args.push(`--registry=${registry}`);
|
|
36
30
|
}
|
|
37
|
-
|
|
38
31
|
const result = await (0, _utils.execa)('npm', args);
|
|
39
32
|
return (0, _utils.stripAnsi)(result.stdout);
|
|
40
33
|
}
|
|
41
|
-
|
|
42
34
|
throw new Error('not found npm, please install npm before');
|
|
43
|
-
}
|
|
44
|
-
|
|
35
|
+
}
|
|
45
36
|
|
|
37
|
+
// 降低包小版本号
|
|
46
38
|
function semverDecrease(version) {
|
|
47
39
|
const versionObj = _utils.semver.parse(version, {
|
|
48
40
|
loose: true
|
|
49
41
|
});
|
|
50
|
-
|
|
51
42
|
if (!versionObj) {
|
|
52
43
|
throw new Error(`Version ${version} is not valid semver`);
|
|
53
44
|
}
|
|
54
|
-
|
|
55
45
|
versionObj.build = [];
|
|
56
46
|
versionObj.prerelease = [];
|
|
57
47
|
versionObj.patch--;
|
|
58
48
|
const result = versionObj.format();
|
|
59
|
-
|
|
60
49
|
if (!_utils.semver.valid(result)) {
|
|
61
50
|
_utils.logger.debug(`Version ${result} is not valid semver`);
|
|
62
|
-
|
|
63
51
|
return version;
|
|
64
52
|
}
|
|
65
|
-
|
|
66
53
|
return result;
|
|
67
54
|
}
|
|
55
|
+
|
|
68
56
|
/**
|
|
69
57
|
* 插件存在 hotfix 版本,从 tools 版本号向上找当前插件版本号
|
|
70
58
|
* tools 存在 hotfix 版本,从 tools 版本号向下找当前插件版本号
|
|
71
59
|
* 限制只在当前小版本号范围内寻找
|
|
72
60
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
61
|
async function getAvailableVersion(packageName, currentVersion, registry) {
|
|
76
62
|
let times = 5;
|
|
77
63
|
let version = currentVersion;
|
|
78
|
-
|
|
79
64
|
while (times) {
|
|
80
65
|
if (!(await isPackageExist(`${packageName}@${version}`, registry)) || (await isPackageDeprecated(`${packageName}@${version}`, registry))) {
|
|
81
66
|
version = _utils.semver.inc(version, 'patch');
|
|
82
67
|
times--;
|
|
83
68
|
continue;
|
|
84
69
|
}
|
|
85
|
-
|
|
86
70
|
return version;
|
|
87
71
|
}
|
|
88
|
-
|
|
89
72
|
times = 5;
|
|
90
|
-
|
|
91
73
|
while (times) {
|
|
92
74
|
version = semverDecrease(version);
|
|
93
|
-
|
|
94
75
|
if (!(await isPackageExist(`${packageName}@${version}`, registry)) || (await isPackageDeprecated(`${packageName}@${version}`, registry))) {
|
|
95
76
|
times--;
|
|
96
77
|
continue;
|
|
97
78
|
}
|
|
98
|
-
|
|
99
79
|
return version;
|
|
100
80
|
}
|
|
101
|
-
|
|
102
81
|
return currentVersion;
|
|
103
82
|
}
|
|
@@ -4,18 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.stripAnsi = stripAnsi;
|
|
7
|
-
|
|
8
7
|
function ansiRegex({
|
|
9
8
|
onlyFirst = false
|
|
10
9
|
} = {}) {
|
|
11
10
|
const pattern = ['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
|
|
12
11
|
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
function stripAnsi(string) {
|
|
16
14
|
if (typeof string !== 'string') {
|
|
17
15
|
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
18
16
|
}
|
|
19
|
-
|
|
20
17
|
return string.replace(ansiRegex(), '');
|
|
21
18
|
}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "3.0.0-beta.
|
|
14
|
+
"version": "3.0.0-beta.1",
|
|
15
15
|
"jsnext:source": "./src/index.ts",
|
|
16
16
|
"types": "./dist/types/index.d.ts",
|
|
17
17
|
"main": "./dist/js/node/index.js",
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@babel/runtime": "^7.18.0",
|
|
31
|
-
"@modern-js/
|
|
32
|
-
"@modern-js/
|
|
33
|
-
"@modern-js/utils": "2.0.0-beta.
|
|
31
|
+
"@modern-js/generator-common": "3.0.0-beta.1",
|
|
32
|
+
"@modern-js/plugin-i18n": "2.0.0-beta.1",
|
|
33
|
+
"@modern-js/utils": "2.0.0-beta.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@modern-js/codesmith": "2.0.0",
|
|
37
|
-
"@scripts/build": "2.0.0-beta.0",
|
|
38
|
-
"@scripts/jest-config": "2.0.0-beta.0",
|
|
39
37
|
"@types/jest": "^27",
|
|
40
38
|
"@types/node": "^14",
|
|
41
39
|
"jest": "^27",
|
|
42
|
-
"typescript": "^4"
|
|
40
|
+
"typescript": "^4",
|
|
41
|
+
"@scripts/build": "2.0.0-beta.1",
|
|
42
|
+
"@scripts/jest-config": "2.0.0-beta.1"
|
|
43
43
|
},
|
|
44
44
|
"sideEffects": false,
|
|
45
45
|
"modernConfig": {
|