feat(core): simplify the migrate command and provide more info about it
This commit is contained in:
parent
a82737968b
commit
a99eefed24
@ -268,12 +268,6 @@ function parseMigrationsOptions(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
if (!options.runMigrations) {
|
if (!options.runMigrations) {
|
||||||
if (!args[0]) {
|
|
||||||
throw new Error(
|
|
||||||
`Specify the package name (e.g., ${commandName} migrate mypackage@1.2.3)`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let from = {};
|
let from = {};
|
||||||
if (options.from) {
|
if (options.from) {
|
||||||
options.from.split(',').forEach(p => {
|
options.from.split(',').forEach(p => {
|
||||||
@ -292,14 +286,18 @@ function parseMigrationsOptions(
|
|||||||
|
|
||||||
let targetPackage;
|
let targetPackage;
|
||||||
let targetVersion;
|
let targetVersion;
|
||||||
if (args[0].lastIndexOf('@') > 0) {
|
if (args[0] && args[0].indexOf('@') > 1) {
|
||||||
const i = args[0].lastIndexOf('@');
|
const i = args[0].lastIndexOf('@');
|
||||||
targetPackage = args[0].substring(0, i);
|
targetPackage = args[0].substring(0, i);
|
||||||
targetVersion = args[0].substring(i + 1);
|
targetVersion = args[0].substring(i + 1);
|
||||||
|
} else if (args[0]) {
|
||||||
|
targetPackage = '@nrwl/workspace';
|
||||||
|
targetVersion = args[0];
|
||||||
} else {
|
} else {
|
||||||
targetPackage = args[0];
|
targetPackage = '@nrwl/workspace';
|
||||||
targetVersion = 'latest';
|
targetVersion = 'latest';
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: 'generateMigrations',
|
type: 'generateMigrations',
|
||||||
targetPackage,
|
targetPackage,
|
||||||
@ -389,6 +387,7 @@ function createFetcher(logger: logging.Logger) {
|
|||||||
return cache[`${packageName}-${packageVersion}`];
|
return cache[`${packageName}-${packageVersion}`];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// testing-fetch-end
|
// testing-fetch-end
|
||||||
|
|
||||||
function createMigrationsFile(root: string, migrations: any[]) {
|
function createMigrationsFile(root: string, migrations: any[]) {
|
||||||
@ -431,38 +430,56 @@ async function generateMigrationsJsonAndUpdatePackageJson(
|
|||||||
to: { [p: string]: string };
|
to: { [p: string]: string };
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
logger.info(`Fetching meta data about packages.`);
|
try {
|
||||||
logger.info(`It may take a few minutes.`);
|
logger.info(`Fetching meta data about packages.`);
|
||||||
const migrator = new Migrator({
|
logger.info(`It may take a few minutes.`);
|
||||||
versions: versions(root, opts.from),
|
const migrator = new Migrator({
|
||||||
fetch: createFetcher(logger),
|
versions: versions(root, opts.from),
|
||||||
from: opts.from,
|
fetch: createFetcher(logger),
|
||||||
to: opts.to
|
from: opts.from,
|
||||||
});
|
to: opts.to
|
||||||
const { migrations, packageJson } = await migrator.updatePackageJson(
|
});
|
||||||
opts.targetPackage,
|
const { migrations, packageJson } = await migrator.updatePackageJson(
|
||||||
opts.targetVersion
|
opts.targetPackage,
|
||||||
);
|
opts.targetVersion
|
||||||
updatePackageJson(root, packageJson);
|
|
||||||
|
|
||||||
if (migrations.length > 0) {
|
|
||||||
createMigrationsFile(root, migrations);
|
|
||||||
|
|
||||||
logger.info(`The migrate command has run successfully.`);
|
|
||||||
logger.info(`- package.json has been updated`);
|
|
||||||
logger.info(`- migrations.json has been generated`);
|
|
||||||
|
|
||||||
logger.info(`Next steps:`);
|
|
||||||
logger.info(
|
|
||||||
`- Make sure package.json changes make sense and then run 'npm install' or 'yarn'`
|
|
||||||
);
|
);
|
||||||
logger.info(`- Run 'nx migrate --run-migrations=migrations.json'`);
|
updatePackageJson(root, packageJson);
|
||||||
} else {
|
|
||||||
logger.info(`The migrate command has run successfully.`);
|
if (migrations.length > 0) {
|
||||||
logger.info(`- package.json has been updated`);
|
createMigrationsFile(root, migrations);
|
||||||
logger.info(
|
|
||||||
`- there are no migrations to run, so migrations.json has not been created.`
|
logger.info(`The migrate command has run successfully.`);
|
||||||
|
logger.info(`- package.json has been updated`);
|
||||||
|
logger.info(`- migrations.json has been generated`);
|
||||||
|
|
||||||
|
logger.info(`Next steps:`);
|
||||||
|
logger.info(
|
||||||
|
`- Make sure package.json changes make sense and then run 'npm install' or 'yarn'`
|
||||||
|
);
|
||||||
|
logger.info(`- Run 'nx migrate --run-migrations=migrations.json'`);
|
||||||
|
} else {
|
||||||
|
logger.info(`The migrate command has run successfully.`);
|
||||||
|
logger.info(`- package.json has been updated`);
|
||||||
|
logger.info(
|
||||||
|
`- there are no migrations to run, so migrations.json has not been created.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
const startVersion = versions(root, {})('@nrwl/workspace');
|
||||||
|
logger.error(
|
||||||
|
`The migrate command failed. Try the following to migrate your workspace:`
|
||||||
);
|
);
|
||||||
|
logger.error(`> npm install --save-dev @nrwl/workspace@latest`);
|
||||||
|
logger.error(
|
||||||
|
`> nx migrate ${opts.targetPackage}@${opts.targetVersion} --from="@nrwl/workspace@${startVersion}"`
|
||||||
|
);
|
||||||
|
logger.error(
|
||||||
|
`This will use the newest version of the migrate functionality, which might have your issue resolved.`
|
||||||
|
);
|
||||||
|
logger.error(
|
||||||
|
`----------------------------------------------------------------------------------------------------`
|
||||||
|
);
|
||||||
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,6 +487,7 @@ class MigrationEngineHost extends NodeModulesEngineHost {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected _resolveCollectionPath(name: string): string {
|
protected _resolveCollectionPath(name: string): string {
|
||||||
let collectionPath: string | undefined = undefined;
|
let collectionPath: string | undefined = undefined;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user