Skip to content

Commit f215748

Browse files
author
雅影
committed
fix: publish error
1 parent d806e4d commit f215748

2 files changed

Lines changed: 62 additions & 60 deletions

File tree

src/built-in-plugins/command-publish/plugin/run-publish.ts

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { pri, tempPath, declarationPath } from '../../../node';
77
import { buildComponent } from '../../command-build/plugin/build';
88
import { commandBundle } from '../../command-bundle/plugin/command-bundle';
99
import { isWorkingTreeClean, getCurrentBranchName } from '../../../utils/git-operate';
10-
import { logInfo, spinner } from '../../../utils/log';
10+
import { logInfo, spinner, logFatal } from '../../../utils/log';
1111
import { getMonoAndNpmDepsOnce, DepMap } from '../../../utils/packages';
1212
import { PackageInfo } from '../../../utils/define';
1313
import {
@@ -96,7 +96,9 @@ async function publishByPackageName(
9696
) {
9797
logInfo(`Start publish ${sourceType}.`);
9898

99-
const { targetPackageJson, targetConfig, targetRoot, targetPackageInfo } = prePareParamsBeforePublish(sourceType);
99+
const {
100+
targetPackageJson, targetConfig, targetRoot, targetPackageInfo,
101+
} = prePareParamsBeforePublish(sourceType);
100102

101103
// Change source config here
102104
pri.sourceConfig = targetConfig;
@@ -121,8 +123,8 @@ async function publishByPackageName(
121123

122124
// Update version in depMao
123125
if (depMap) {
124-
depMap.forEach(value => {
125-
value.depMonoPackages.forEach(eachPackage => {
126+
depMap.forEach((value) => {
127+
value.depMonoPackages.forEach((eachPackage) => {
126128
if (eachPackage.name === sourceType) {
127129
// eslint-disable-next-line no-param-reassign
128130
eachPackage.packageJson.version = targetPackageJson.version;
@@ -157,7 +159,9 @@ async function publishPackageAndItsMonoPackage(
157159
) {
158160
logInfo(`Start publish ${sourceType}.`);
159161

160-
const { targetPackageJson, targetConfig, targetRoot, targetPackageInfo } = prePareParamsBeforePublish(sourceType);
162+
const {
163+
targetPackageJson, targetConfig, targetRoot, targetPackageInfo,
164+
} = prePareParamsBeforePublish(sourceType);
161165

162166
// Change source config here
163167
pri.sourceConfig = targetConfig;
@@ -176,7 +180,7 @@ async function publishPackageAndItsMonoPackage(
176180

177181
// Generate all package version and upgrade
178182

179-
await depMonoPackages.forEach(async item => {
183+
await depMonoPackages.forEach(async (item) => {
180184
const version = await generateVersion(options, isDevelopBranch, item.packageJson, item.config, currentBranchName);
181185

182186
monoPackageVersion[item.name as string] = version;
@@ -190,8 +194,8 @@ async function publishPackageAndItsMonoPackage(
190194

191195
// Update depMonoPackages version
192196

193-
depMonoPackages.forEach(item => {
194-
depMap.get(item.name).depMonoPackages.forEach(eachPackage => {
197+
depMonoPackages.forEach((item) => {
198+
depMap.get(item.name).depMonoPackages.forEach((eachPackage) => {
195199
if (monoPackageVersion[eachPackage.packageJson.name]) {
196200
eachPackage.packageJson.version = monoPackageVersion[eachPackage.packageJson.name];
197201
}
@@ -220,23 +224,21 @@ async function publishPackageAndItsMonoPackage(
220224
});
221225
}
222226

223-
try {
224-
const publishQueue = [];
225-
// async publish & add tag and push
226-
depMonoPackages.map(item => {
227-
publishQueue.push(buildComponentAndPublish(item, options, depMap, isDevelopBranch));
228-
});
227+
const publishQueue = [];
228+
// async publish & add tag and push
229+
depMonoPackages.map((item) => {
230+
publishQueue.push(buildComponentAndPublish(item, options, depMap, isDevelopBranch));
231+
});
229232

230-
// publish current package
231-
publishQueue.push(buildComponentAndPublish(targetPackageInfo, options, depMap, isDevelopBranch));
233+
// publish current package
234+
publishQueue.push(buildComponentAndPublish(targetPackageInfo, options, depMap, isDevelopBranch));
232235

233-
return Promise.all(publishQueue);
234-
} catch (e) {
235-
logInfo(`publish error ${e} stop publish`);
236+
return Promise.all(publishQueue).catch(async (e) => {
236237
await fs.remove(path.join(pri.projectRootPath, tempPath.dir, declarationPath.dir));
237238
await exec(`git push origin ${currentBranchName}`);
238-
return process.exit(0);
239-
}
239+
logFatal(`publish error stop publish: ${e}`);
240+
process.exit(0);
241+
});
240242
}
241243

242244
async function buildComponentAndPublish(
@@ -245,23 +247,20 @@ async function buildComponentAndPublish(
245247
depMap: DepMap,
246248
isDevelopBranch: boolean,
247249
) {
248-
return new Promise(async resolve => {
249-
await buildComponent(packageInfo);
250+
await buildComponent(packageInfo);
250251

251-
if (options.bundle) {
252-
await commandBundle({ skipLint: true });
253-
}
252+
if (options.bundle) {
253+
await commandBundle({ skipLint: true });
254+
}
254255

255-
await moveSourceFilesToTempFolderAndPublish(
256-
packageInfo.name,
257-
options,
258-
packageInfo.config,
259-
packageInfo.rootPath,
260-
depMap,
261-
isDevelopBranch,
262-
);
263-
264-
await addTagAndPush(generateTag(packageInfo.name, packageInfo.packageJson), packageInfo.packageJson);
265-
resolve();
266-
});
256+
await moveSourceFilesToTempFolderAndPublish(
257+
packageInfo.name,
258+
options,
259+
packageInfo.config,
260+
packageInfo.rootPath,
261+
depMap,
262+
isDevelopBranch,
263+
);
264+
265+
await addTagAndPush(generateTag(packageInfo.name, packageInfo.packageJson), packageInfo.packageJson);
267266
}

src/built-in-plugins/command-publish/plugin/utils.ts

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -110,24 +110,36 @@ export async function generateVersion(
110110

111111
// Generate beta version if branch is not master or develop
112112
if (options.tag === 'beta' || !isDevelopBranch) {
113-
const basicVersion = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name} version`)
114-
.toString()
115-
.trim();
113+
// fixed basicVersion to 1.0.0
114+
const basicVersion = '1.0.0';
116115

117116
const branchNameInVersion = currentBranchName.replace(/\//g, '').replace(/\./g, '');
118117

119-
// all of package versions
120-
const publishedVersions = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name} versions`)
121-
.toString()
122-
.trim()
123-
.replace(/\n|'| |\[|\]/g, '')
124-
.split(',');
118+
let publishedVersions: string[] = [];
119+
try {
120+
// all of package versions
121+
const tempVersions = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name} versions`);
122+
if (tempVersions) {
123+
publishedVersions = tempVersions
124+
.toString()
125+
.trim()
126+
.replace(/\n|'| |\[|\]/g, '')
127+
.split(',');
128+
} else {
129+
publishedVersions = [];
130+
}
131+
} catch (e) {
132+
publishedVersions = [];
133+
}
125134

126135
let maxBetaVersionNum = 0;
127136

137+
// 1.0.0-branchName.version
138+
const betaVersionReg = new RegExp(`\\d+\\.\\d+\\.\\d+-${branchNameInVersion}\\.\\d+`);
139+
128140
// get max beta version
129141
publishedVersions.forEach((v: string) => {
130-
if (v.includes(branchNameInVersion)) {
142+
if (betaVersionReg.test(v)) {
131143
const tempBetaVersion = Number(v.split(`${branchNameInVersion}.`)[1]);
132144

133145
if (maxBetaVersionNum < tempBetaVersion) {
@@ -136,15 +148,8 @@ export async function generateVersion(
136148
}
137149
});
138150

139-
// basic version include branchName -> use basic version
140-
if (basicVersion.includes(branchNameInVersion)) {
141-
const tempVersion = basicVersion.split('.').reverse();
142-
tempVersion[0] = maxBetaVersionNum.toString();
143-
version = tempVersion.reverse().join('.');
144-
} else {
145-
// basic version without branchName -> use basic version + branch name + beta version
146-
version = `${basicVersion}-${branchNameInVersion}.${maxBetaVersionNum + 1}`;
147-
}
151+
// basic version without branchName -> use basic version + branch name + beta version
152+
version = `${basicVersion}-${branchNameInVersion}.${maxBetaVersionNum + 1}`;
148153
} else if (versionResult) {
149154
if (!options.semver) {
150155
const versionPrompt = await inquirer.prompt([
@@ -337,9 +342,7 @@ export async function addMissingDeps(
337342
.filter(npmName => !['react', 'react-dom', 'antd'].includes(npmName))
338343
.reduce((root, next) => {
339344
if (!sourceDeps[next]) {
340-
logFatal(
341-
`${pri.selectedSourceType}'s code depends on "${next}", but it doesn't exist in root package.json`,
342-
);
345+
logFatal(`package ${sourceType}'s code depends on "${next}", but it doesn't exist in root package.json`);
343346
}
344347

345348
return {

0 commit comments

Comments
 (0)