mirror of https://github.com/abpframework/abp
parent
03e11e929d
commit
7b2d7a57cf
@ -0,0 +1,14 @@
|
||||
{
|
||||
"generators": {
|
||||
"generate-proxy": {
|
||||
"factory": "./src/generators/generate-proxy/generator",
|
||||
"schema": "./src/generators/generate-proxy/schema.json",
|
||||
"description": "generate-proxy generator"
|
||||
},
|
||||
"update-version": {
|
||||
"factory": "./src/generators/update-version/generator",
|
||||
"schema": "./src/generators/update-version/schema.json",
|
||||
"description": "update-version generator"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
export * from './schema';
|
||||
export * from './generator';
|
@ -0,0 +1,50 @@
|
||||
import { Tree, updateJson } from '@nx/devkit';
|
||||
import { UpdateVersionGeneratorSchema } from './schema';
|
||||
import { getPackageJsonList, getVersionByPackageNameFactory, semverRegex } from './utils';
|
||||
|
||||
export function updateVersionGenerator(tree: Tree, schema: UpdateVersionGeneratorSchema) {
|
||||
const packageJsonList = getPackageJsonList(tree, schema.packages || []);
|
||||
const getVersionNumberByPackageName = getVersionByPackageNameFactory(
|
||||
schema.abpVersion,
|
||||
schema.leptonXVersion,
|
||||
);
|
||||
packageJsonList.forEach(path => {
|
||||
updateJson(tree, path, pkgJson => {
|
||||
pkgJson.version = getVersionNumberByPackageName(pkgJson.name) || pkgJson.version;
|
||||
console.log('\x1b[32m', `Updated ${pkgJson.name} version to ${pkgJson.version}`);
|
||||
|
||||
Object.keys(pkgJson.dependencies || {}).forEach(key => {
|
||||
const v = getVersionNumberByPackageName(key);
|
||||
if (!v) {
|
||||
return;
|
||||
}
|
||||
pkgJson.dependencies[key] = pkgJson.dependencies[key].replace(semverRegex, v);
|
||||
console.log('\x1b[32m', `Updated ${key} version to ${v} in dependencies`);
|
||||
});
|
||||
|
||||
Object.keys(pkgJson.peerDependencies || {}).forEach(key => {
|
||||
const v = getVersionNumberByPackageName(key);
|
||||
if (!v) {
|
||||
return;
|
||||
}
|
||||
pkgJson.peerDependencies[key] = pkgJson.peerDependencies[key].replace(semverRegex, v);
|
||||
console.log('\x1b[32m', `Updated ${key} version to ${schema.abpVersion} in peerDependencies`);
|
||||
});
|
||||
|
||||
Object.keys(pkgJson.devDependencies || {}).forEach(key => {
|
||||
const v = getVersionNumberByPackageName(key);
|
||||
if (!v) {
|
||||
return;
|
||||
}
|
||||
pkgJson.devDependencies[key] = pkgJson.devDependencies[key].replace(semverRegex, v);
|
||||
console.log('\x1b[32m', `Updated ${key} version to ${schema.abpVersion} on devDependencies`);
|
||||
});
|
||||
|
||||
return pkgJson;
|
||||
});
|
||||
});
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
return () => {};
|
||||
}
|
||||
|
||||
export default updateVersionGenerator;
|
@ -0,0 +1,3 @@
|
||||
export * from './generator';
|
||||
export * from './schema';
|
||||
export * from './utils'
|
@ -0,0 +1,5 @@
|
||||
export interface UpdateVersionGeneratorSchema {
|
||||
abpVersion:string;
|
||||
leptonXVersion: string;
|
||||
packages?: string[];
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema",
|
||||
"$id": "UpdateVersion",
|
||||
"title": "",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"abpVersion": {
|
||||
"type": "string",
|
||||
"description": "",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What ABP version would you like to use?"
|
||||
},
|
||||
"leptonXVersion": {
|
||||
"type": "string",
|
||||
"description": "",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 1
|
||||
},
|
||||
"x-prompt": "What Lepton X version would you like to use?"
|
||||
}
|
||||
},
|
||||
"required": ["abpVersion"]
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
import { getProjects, readJson, readProjectConfiguration, Tree } from '@nx/devkit';
|
||||
|
||||
export const IGNORED_PROJECT_NAMES = ['apex-chart-components', 'bs-components', 'workspace-plugin'];
|
||||
|
||||
export function getPackageJsonList(tree: Tree, packages: string[]): string[] {
|
||||
const project = getProjects(tree);
|
||||
|
||||
const result = ['/package.json'];
|
||||
project.forEach((value, key) => {
|
||||
|
||||
if (value.projectType !== 'library') {
|
||||
|
||||
return;
|
||||
}
|
||||
if (IGNORED_PROJECT_NAMES.some(x => x === key)) {
|
||||
return;
|
||||
}
|
||||
const projectConfiguration = readProjectConfiguration(tree, key);
|
||||
|
||||
if (packages.length && !packages.includes(value.name)) {
|
||||
return;
|
||||
}
|
||||
result.push(projectConfiguration.root + '/package.json');
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
export function getPackageNameList(tree: Tree, packageJsonList: string[]) {
|
||||
return packageJsonList.map(packageJson => {
|
||||
const jsonFile = readJson(tree, packageJson);
|
||||
return jsonFile.name;
|
||||
});
|
||||
}
|
||||
|
||||
const leptonPackages = [
|
||||
'@abp/ng.theme.lepton-x',
|
||||
'@volosoft/ngx-lepton-x',
|
||||
'@volo/abp.ng.lepton-x.core',
|
||||
'@volo/ngx-lepton-x.core',
|
||||
'@volo/ngx-lepton-x.lite',
|
||||
'@volosoft/abp.ng.theme.lepton-x',
|
||||
];
|
||||
const abpPackageNameRegex = /^@(abp|volo|volosoft)\/.*/;
|
||||
|
||||
export function isAbpPack(packageName) {
|
||||
return abpPackageNameRegex.test(packageName) && !leptonPackages.includes(packageName);
|
||||
}
|
||||
export function functionisLeptonXPack(packageName) {
|
||||
return leptonPackages.includes(packageName);
|
||||
}
|
||||
|
||||
export function getVersionByPackageNameFactory(abpVersionName: string, leptonXVersionName: string) {
|
||||
return (packageName: string) => {
|
||||
if (isAbpPack(packageName)) {
|
||||
return abpVersionName;
|
||||
}
|
||||
if (functionisLeptonXPack(packageName)) {
|
||||
return leptonXVersionName;
|
||||
}
|
||||
return '';
|
||||
};
|
||||
}
|
||||
|
||||
export const semverRegex =
|
||||
/\d+\.\d+\.\d+(?:-[a-zA-Z0-9]+(?:\.[a-zA-Z0-9-]+)*)?(?:\+[a-zA-Z0-9]+(?:\.[a-zA-Z0-9-]+)*)?$/;
|
@ -0,0 +1 @@
|
||||
export * from './generators/generate-proxy'
|
Loading…
Reference in new issue