2022-01-27 14:32:38 +08:00
|
|
|
import * as semver from 'semver';
|
2022-01-27 15:28:00 +08:00
|
|
|
import type { IPackageInfo } from './getPackageInfos';
|
|
|
|
import { getPackageInfos } from './getPackageInfos';
|
2022-01-27 14:32:38 +08:00
|
|
|
|
|
|
|
function checkPackageVersion(publishPackages: IPackageInfo[]) {
|
|
|
|
publishPackages.forEach((publishPackage: IPackageInfo) => {
|
|
|
|
const { publishVersion, localVersion, name, packageInfo } = publishPackage;
|
|
|
|
if (publishVersion !== localVersion) {
|
|
|
|
throw new Error(`[ERROR] version of package ${name} is not valid local verison: ${localVersion}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let i = 0; i < publishPackages.length; i++) {
|
|
|
|
const dependenceName = publishPackages[i].name;
|
|
|
|
const dependenceVersion = publishPackages[i].publishVersion;
|
|
|
|
const dependencyInfo = `${dependenceName}${packageInfo.dependencies[dependenceName]}`;
|
|
|
|
if (packageInfo.dependencies && packageInfo.dependencies[dependenceName]) {
|
|
|
|
if (!semver.satisfies(dependenceVersion, packageInfo.dependencies[dependenceName])) {
|
|
|
|
throw new Error(`[ERROR] dependency ${dependencyInfo} of package ${name}
|
|
|
|
is not satisfied with verison ${dependenceVersion}`);
|
|
|
|
}
|
|
|
|
} else if (packageInfo.devDependencies && packageInfo.devDependencies[dependenceName]) {
|
|
|
|
if (!semver.satisfies(dependenceVersion, packageInfo.devDependencies[dependenceName])) {
|
|
|
|
throw new Error(`[ERROR] devDependency ${dependencyInfo} of package ${name}
|
|
|
|
is not satisfied with verison ${dependenceVersion}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
getPackageInfos().then((packageInfos: IPackageInfo[]) => {
|
|
|
|
const shouldPublishPackages = packageInfos
|
|
|
|
.filter((packageInfo) => packageInfo.shouldPublish);
|
|
|
|
checkPackageVersion(shouldPublishPackages);
|
|
|
|
console.log('[VERSION] check successfully');
|
|
|
|
}).catch((e) => {
|
|
|
|
console.trace(e.message);
|
|
|
|
process.exit(128);
|
|
|
|
});
|