@modern-js/generator-utils 3.0.0-beta.0 → 3.0.0-beta.2
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 +48 -0
- package/dist/js/modern/index.js +10 -38
- 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 +9 -58
- 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 +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @modern-js/generator-utils
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.2
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- dda38c9c3e: chore: v2
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [92f0ead]
|
|
12
|
+
- Updated dependencies [edd1cfb1af]
|
|
13
|
+
- Updated dependencies [cc971eabfc]
|
|
14
|
+
- Updated dependencies [5b9049f2e9]
|
|
15
|
+
- Updated dependencies [92004d1]
|
|
16
|
+
- Updated dependencies [b8bbe036c7]
|
|
17
|
+
- Updated dependencies [d5a31df781]
|
|
18
|
+
- Updated dependencies [dda38c9c3e]
|
|
19
|
+
- Updated dependencies [3bbea92b2a]
|
|
20
|
+
- Updated dependencies [abf3421a75]
|
|
21
|
+
- Updated dependencies [543be9558e]
|
|
22
|
+
- Updated dependencies [14b712da84]
|
|
23
|
+
- @modern-js/utils@2.0.0-beta.2
|
|
24
|
+
- @modern-js/plugin-i18n@2.0.0-beta.2
|
|
25
|
+
- @modern-js/generator-common@3.0.0-beta.2
|
|
26
|
+
|
|
27
|
+
## 3.0.0-beta.1
|
|
28
|
+
|
|
29
|
+
### Major Changes
|
|
30
|
+
|
|
31
|
+
- dda38c9: chore: v2
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- Updated dependencies [92f0ead]
|
|
36
|
+
- Updated dependencies [edd1cfb1af]
|
|
37
|
+
- Updated dependencies [cc971eabfc]
|
|
38
|
+
- Updated dependencies [5b9049f]
|
|
39
|
+
- Updated dependencies [92004d1]
|
|
40
|
+
- Updated dependencies [b8bbe036c7]
|
|
41
|
+
- Updated dependencies [d5a31df781]
|
|
42
|
+
- Updated dependencies [dda38c9]
|
|
43
|
+
- Updated dependencies [3bbea92b2a]
|
|
44
|
+
- Updated dependencies [abf3421]
|
|
45
|
+
- Updated dependencies [543be9558e]
|
|
46
|
+
- Updated dependencies [14b712d]
|
|
47
|
+
- @modern-js/utils@2.0.0-beta.1
|
|
48
|
+
- @modern-js/plugin-i18n@2.0.0-beta.1
|
|
49
|
+
- @modern-js/generator-common@3.0.0-beta.1
|
|
50
|
+
|
|
3
51
|
## 3.0.0-beta.0
|
|
4
52
|
|
|
5
53
|
### Major Changes
|
package/dist/js/modern/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { fs, ora, execa, getMonorepoPackages, canUseNpm, canUsePnpm, canUseYarn
|
|
2
|
+
import { fs, ora, execa, getMonorepoPackages, canUseNpm, canUsePnpm, canUseYarn } from '@modern-js/utils';
|
|
3
3
|
import { SolutionToolsMap } from '@modern-js/generator-common';
|
|
4
4
|
import { stripAnsi } from "./utils/strip-ansi";
|
|
5
5
|
import { i18n, localeKeys } from "./locale";
|
|
@@ -8,45 +8,37 @@ export * from "./utils";
|
|
|
8
8
|
export { ora, fs, semver, execa, readTsConfigByFile, getPackageManager, canUseNpm, canUsePnpm, canUseYarn, isReact18 } from '@modern-js/utils';
|
|
9
9
|
export { i18n } from "./locale";
|
|
10
10
|
export async function getPackageVersion(packageName, registry) {
|
|
11
|
-
const spinner = ora(
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const spinner = ora({
|
|
12
|
+
text: 'Load Generator...',
|
|
13
|
+
spinner: 'runner'
|
|
14
|
+
}).start();
|
|
14
15
|
if (await canUsePnpm()) {
|
|
15
16
|
const args = ['info', packageName, 'version'];
|
|
16
|
-
|
|
17
17
|
if (registry) {
|
|
18
18
|
args.push(`--registry=${registry}`);
|
|
19
19
|
}
|
|
20
|
-
|
|
21
20
|
const result = await execa('pnpm', args);
|
|
22
21
|
spinner.stop();
|
|
23
22
|
return stripAnsi(result.stdout);
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
if (await canUseYarn()) {
|
|
27
25
|
const args = ['info', packageName, 'version', '--silent'];
|
|
28
|
-
|
|
29
26
|
if (registry) {
|
|
30
27
|
args.push(`--registry=${registry}`);
|
|
31
28
|
}
|
|
32
|
-
|
|
33
29
|
const result = await execa('yarn', args);
|
|
34
30
|
spinner.stop();
|
|
35
31
|
return stripAnsi(result.stdout);
|
|
36
32
|
}
|
|
37
|
-
|
|
38
33
|
if (await canUseNpm()) {
|
|
39
34
|
const args = ['view', packageName, 'version'];
|
|
40
|
-
|
|
41
35
|
if (registry) {
|
|
42
36
|
args.push(`--registry=${registry}`);
|
|
43
37
|
}
|
|
44
|
-
|
|
45
38
|
const result = await execa('npm', args);
|
|
46
39
|
spinner.stop();
|
|
47
40
|
return stripAnsi(result.stdout);
|
|
48
41
|
}
|
|
49
|
-
|
|
50
42
|
spinner.stop();
|
|
51
43
|
throw new Error('not found npm, please install npm before');
|
|
52
44
|
}
|
|
@@ -63,36 +55,25 @@ export async function getModernPluginVersion(solution, packageName, options = {
|
|
|
63
55
|
registry,
|
|
64
56
|
distTag
|
|
65
57
|
} = options;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const version = await getPackageVersion(`${packageName}@${distTag}`, registry);
|
|
58
|
+
const getLatetPluginVersion = async tag => {
|
|
59
|
+
const version = await getPackageVersion(`${packageName}@${tag || distTag || 'latest'}`, registry);
|
|
69
60
|
return version;
|
|
70
61
|
};
|
|
71
|
-
|
|
72
62
|
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
|
-
|
|
63
|
+
return getLatetPluginVersion('latest');
|
|
64
|
+
}
|
|
65
|
+
// get project solution version
|
|
77
66
|
const pkgPath = path.join(require.resolve(SolutionToolsMap[solution], {
|
|
78
67
|
paths: [cwd]
|
|
79
68
|
}), '../../../../', 'package.json');
|
|
80
|
-
|
|
81
69
|
if (fs.existsSync(pkgPath)) {
|
|
82
70
|
const pkgInfo = fs.readJSONSync(pkgPath);
|
|
83
71
|
const modernVersion = pkgInfo.version;
|
|
84
|
-
|
|
85
72
|
if (typeof modernVersion !== 'string') {
|
|
86
73
|
return getLatetPluginVersion();
|
|
87
74
|
}
|
|
88
|
-
|
|
89
|
-
if (semver.lt(modernVersion, '1.15.0')) {
|
|
90
|
-
return getLatetPluginVersion();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
75
|
return getAvailableVersion(packageName, modernVersion, registry);
|
|
94
76
|
}
|
|
95
|
-
|
|
96
77
|
return getLatetPluginVersion();
|
|
97
78
|
}
|
|
98
79
|
export function getPackageManagerText(packageManager) {
|
|
@@ -113,7 +94,6 @@ export function validatePackageName(value, packages, options) {
|
|
|
113
94
|
const {
|
|
114
95
|
isMonorepoSubProject
|
|
115
96
|
} = options;
|
|
116
|
-
|
|
117
97
|
if (isMonorepoSubProject && packages.includes(value)) {
|
|
118
98
|
return {
|
|
119
99
|
success: false,
|
|
@@ -122,7 +102,6 @@ export function validatePackageName(value, packages, options) {
|
|
|
122
102
|
})
|
|
123
103
|
};
|
|
124
104
|
}
|
|
125
|
-
|
|
126
105
|
return {
|
|
127
106
|
success: true
|
|
128
107
|
};
|
|
@@ -134,15 +113,12 @@ export function validatePackagePath(value, projectDir, options) {
|
|
|
134
113
|
isTest
|
|
135
114
|
} = options || {};
|
|
136
115
|
let dir = 'apps';
|
|
137
|
-
|
|
138
116
|
if (isMwa && isTest) {
|
|
139
117
|
dir = 'examples';
|
|
140
118
|
} else {
|
|
141
119
|
dir = isPublic ? 'packages' : 'features';
|
|
142
120
|
}
|
|
143
|
-
|
|
144
121
|
const packageDir = path.resolve(projectDir || '', dir, value);
|
|
145
|
-
|
|
146
122
|
if (fs.existsSync(packageDir)) {
|
|
147
123
|
return {
|
|
148
124
|
success: false,
|
|
@@ -151,7 +127,6 @@ export function validatePackagePath(value, projectDir, options) {
|
|
|
151
127
|
})
|
|
152
128
|
};
|
|
153
129
|
}
|
|
154
|
-
|
|
155
130
|
return {
|
|
156
131
|
success: true
|
|
157
132
|
};
|
|
@@ -160,17 +135,14 @@ export function getModuleProjectPath(packagePath, isMonorepoSubProject, isPublic
|
|
|
160
135
|
if (isLocalPackages && packagePath) {
|
|
161
136
|
return `${packagePath}/`;
|
|
162
137
|
}
|
|
163
|
-
|
|
164
138
|
if (isMonorepoSubProject && packagePath) {
|
|
165
139
|
return `${isPublic ? 'packages' : 'features'}/${packagePath}/`;
|
|
166
140
|
}
|
|
167
|
-
|
|
168
141
|
return '';
|
|
169
142
|
}
|
|
170
143
|
export function getMWAProjectPath(packagePath, isMonorepoSubProject, isTest = false) {
|
|
171
144
|
if (isMonorepoSubProject && packagePath) {
|
|
172
145
|
return `${isTest ? 'examples' : 'apps'}/${packagePath}/`;
|
|
173
146
|
}
|
|
174
|
-
|
|
175
147
|
return '';
|
|
176
148
|
}
|
|
@@ -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,47 @@ 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
|
-
const spinner = (0, _utils.ora)(
|
|
138
|
-
|
|
139
|
-
|
|
127
|
+
const spinner = (0, _utils.ora)({
|
|
128
|
+
text: 'Load Generator...',
|
|
129
|
+
spinner: 'runner'
|
|
130
|
+
}).start();
|
|
140
131
|
if (await (0, _utils.canUsePnpm)()) {
|
|
141
132
|
const args = ['info', packageName, 'version'];
|
|
142
|
-
|
|
143
133
|
if (registry) {
|
|
144
134
|
args.push(`--registry=${registry}`);
|
|
145
135
|
}
|
|
146
|
-
|
|
147
136
|
const result = await (0, _utils.execa)('pnpm', args);
|
|
148
137
|
spinner.stop();
|
|
149
138
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
150
139
|
}
|
|
151
|
-
|
|
152
140
|
if (await (0, _utils.canUseYarn)()) {
|
|
153
141
|
const args = ['info', packageName, 'version', '--silent'];
|
|
154
|
-
|
|
155
142
|
if (registry) {
|
|
156
143
|
args.push(`--registry=${registry}`);
|
|
157
144
|
}
|
|
158
|
-
|
|
159
145
|
const result = await (0, _utils.execa)('yarn', args);
|
|
160
146
|
spinner.stop();
|
|
161
147
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
162
148
|
}
|
|
163
|
-
|
|
164
149
|
if (await (0, _utils.canUseNpm)()) {
|
|
165
150
|
const args = ['view', packageName, 'version'];
|
|
166
|
-
|
|
167
151
|
if (registry) {
|
|
168
152
|
args.push(`--registry=${registry}`);
|
|
169
153
|
}
|
|
170
|
-
|
|
171
154
|
const result = await (0, _utils.execa)('npm', args);
|
|
172
155
|
spinner.stop();
|
|
173
156
|
return (0, _stripAnsi.stripAnsi)(result.stdout);
|
|
174
157
|
}
|
|
175
|
-
|
|
176
158
|
spinner.stop();
|
|
177
159
|
throw new Error('not found npm, please install npm before');
|
|
178
160
|
}
|
|
179
|
-
|
|
180
161
|
async function getModernVersion(solution, registry, distTag = 'latest') {
|
|
181
162
|
const dep = _generatorCommon.SolutionToolsMap[solution];
|
|
182
163
|
const modernVersion = await getPackageVersion(`${dep}@${distTag}`, registry);
|
|
183
164
|
return modernVersion;
|
|
184
165
|
}
|
|
185
|
-
|
|
186
166
|
async function getModernPluginVersion(solution, packageName, options = {
|
|
187
167
|
distTag: 'latest'
|
|
188
168
|
}) {
|
|
@@ -191,63 +171,45 @@ async function getModernPluginVersion(solution, packageName, options = {
|
|
|
191
171
|
registry,
|
|
192
172
|
distTag
|
|
193
173
|
} = options;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const version = await getPackageVersion(`${packageName}@${distTag}`, registry);
|
|
174
|
+
const getLatetPluginVersion = async tag => {
|
|
175
|
+
const version = await getPackageVersion(`${packageName}@${tag || distTag || 'latest'}`, registry);
|
|
197
176
|
return version;
|
|
198
177
|
};
|
|
199
|
-
|
|
200
178
|
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
|
-
|
|
179
|
+
return getLatetPluginVersion('latest');
|
|
180
|
+
}
|
|
181
|
+
// get project solution version
|
|
205
182
|
const pkgPath = _path.default.join(require.resolve(_generatorCommon.SolutionToolsMap[solution], {
|
|
206
183
|
paths: [cwd]
|
|
207
184
|
}), '../../../../', 'package.json');
|
|
208
|
-
|
|
209
185
|
if (_utils.fs.existsSync(pkgPath)) {
|
|
210
186
|
const pkgInfo = _utils.fs.readJSONSync(pkgPath);
|
|
211
|
-
|
|
212
187
|
const modernVersion = pkgInfo.version;
|
|
213
|
-
|
|
214
188
|
if (typeof modernVersion !== 'string') {
|
|
215
189
|
return getLatetPluginVersion();
|
|
216
190
|
}
|
|
217
|
-
|
|
218
|
-
if (_utils.semver.lt(modernVersion, '1.15.0')) {
|
|
219
|
-
return getLatetPluginVersion();
|
|
220
|
-
}
|
|
221
|
-
|
|
222
191
|
return (0, _package.getAvailableVersion)(packageName, modernVersion, registry);
|
|
223
192
|
}
|
|
224
|
-
|
|
225
193
|
return getLatetPluginVersion();
|
|
226
194
|
}
|
|
227
|
-
|
|
228
195
|
function getPackageManagerText(packageManager) {
|
|
229
196
|
return packageManager === 'yarn' ? 'yarn' : `${packageManager} run`;
|
|
230
197
|
}
|
|
231
|
-
|
|
232
198
|
function isTsProject(appDir) {
|
|
233
199
|
return _utils.fs.existsSync(_path.default.join(appDir, 'tsconfig.json'));
|
|
234
200
|
}
|
|
235
|
-
|
|
236
201
|
async function getPackageObj(context) {
|
|
237
202
|
const pkgStr = (await context.materials.default.get(`package.json`).value()).content;
|
|
238
203
|
return JSON.parse(pkgStr);
|
|
239
204
|
}
|
|
240
|
-
|
|
241
205
|
function getAllPackages(appDir) {
|
|
242
206
|
const packages = (0, _utils.getMonorepoPackages)(appDir);
|
|
243
207
|
return packages.map(pkg => pkg.name);
|
|
244
208
|
}
|
|
245
|
-
|
|
246
209
|
function validatePackageName(value, packages, options) {
|
|
247
210
|
const {
|
|
248
211
|
isMonorepoSubProject
|
|
249
212
|
} = options;
|
|
250
|
-
|
|
251
213
|
if (isMonorepoSubProject && packages.includes(value)) {
|
|
252
214
|
return {
|
|
253
215
|
success: false,
|
|
@@ -256,12 +218,10 @@ function validatePackageName(value, packages, options) {
|
|
|
256
218
|
})
|
|
257
219
|
};
|
|
258
220
|
}
|
|
259
|
-
|
|
260
221
|
return {
|
|
261
222
|
success: true
|
|
262
223
|
};
|
|
263
224
|
}
|
|
264
|
-
|
|
265
225
|
function validatePackagePath(value, projectDir, options) {
|
|
266
226
|
const {
|
|
267
227
|
isMwa,
|
|
@@ -269,15 +229,12 @@ function validatePackagePath(value, projectDir, options) {
|
|
|
269
229
|
isTest
|
|
270
230
|
} = options || {};
|
|
271
231
|
let dir = 'apps';
|
|
272
|
-
|
|
273
232
|
if (isMwa && isTest) {
|
|
274
233
|
dir = 'examples';
|
|
275
234
|
} else {
|
|
276
235
|
dir = isPublic ? 'packages' : 'features';
|
|
277
236
|
}
|
|
278
|
-
|
|
279
237
|
const packageDir = _path.default.resolve(projectDir || '', dir, value);
|
|
280
|
-
|
|
281
238
|
if (_utils.fs.existsSync(packageDir)) {
|
|
282
239
|
return {
|
|
283
240
|
success: false,
|
|
@@ -286,28 +243,22 @@ function validatePackagePath(value, projectDir, options) {
|
|
|
286
243
|
})
|
|
287
244
|
};
|
|
288
245
|
}
|
|
289
|
-
|
|
290
246
|
return {
|
|
291
247
|
success: true
|
|
292
248
|
};
|
|
293
249
|
}
|
|
294
|
-
|
|
295
250
|
function getModuleProjectPath(packagePath, isMonorepoSubProject, isPublic, isLocalPackages) {
|
|
296
251
|
if (isLocalPackages && packagePath) {
|
|
297
252
|
return `${packagePath}/`;
|
|
298
253
|
}
|
|
299
|
-
|
|
300
254
|
if (isMonorepoSubProject && packagePath) {
|
|
301
255
|
return `${isPublic ? 'packages' : 'features'}/${packagePath}/`;
|
|
302
256
|
}
|
|
303
|
-
|
|
304
257
|
return '';
|
|
305
258
|
}
|
|
306
|
-
|
|
307
259
|
function getMWAProjectPath(packagePath, isMonorepoSubProject, isTest = false) {
|
|
308
260
|
if (isMonorepoSubProject && packagePath) {
|
|
309
261
|
return `${isTest ? 'examples' : 'apps'}/${packagePath}/`;
|
|
310
262
|
}
|
|
311
|
-
|
|
312
263
|
return '';
|
|
313
264
|
}
|
|
@@ -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.2",
|
|
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/plugin-i18n": "2.0.0-beta.
|
|
32
|
-
"@modern-js/generator-common": "3.0.0-beta.
|
|
33
|
-
"@modern-js/utils": "2.0.0-beta.
|
|
31
|
+
"@modern-js/plugin-i18n": "2.0.0-beta.2",
|
|
32
|
+
"@modern-js/generator-common": "3.0.0-beta.2",
|
|
33
|
+
"@modern-js/utils": "2.0.0-beta.2"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@modern-js/codesmith": "2.0.
|
|
37
|
-
"@scripts/build": "2.0.0-beta.0",
|
|
38
|
-
"@scripts/jest-config": "2.0.0-beta.0",
|
|
36
|
+
"@modern-js/codesmith": "2.0.1",
|
|
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.2",
|
|
42
|
+
"@scripts/jest-config": "2.0.0-beta.2"
|
|
43
43
|
},
|
|
44
44
|
"sideEffects": false,
|
|
45
45
|
"modernConfig": {
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"access": "public"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
|
-
"new": "modern new",
|
|
56
|
-
"build": "modern build",
|
|
55
|
+
"new": "modern-lib new",
|
|
56
|
+
"build": "modern-lib build",
|
|
57
57
|
"test": "jest --passWithNoTests"
|
|
58
58
|
}
|
|
59
59
|
}
|