fix(angular): ensure required peer deps are installed when migrating from angular cli workspaces (#14766)
This commit is contained in:
parent
ed5ad1e367
commit
17aa8950d5
@ -56,7 +56,6 @@
|
||||
"webpack-merge": "5.7.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular-devkit/architect": ">= 0.1400.0 < 0.1600.0",
|
||||
"@angular-devkit/build-angular": ">= 14.0.0 < 16.0.0",
|
||||
"@angular-devkit/schematics": ">= 14.0.0 < 16.0.0",
|
||||
"@schematics/angular": ">= 14.0.0 < 16.0.0",
|
||||
|
||||
@ -18,6 +18,7 @@ import {
|
||||
createWorkspaceFiles,
|
||||
deleteAngularJson,
|
||||
deleteGitKeepFilesIfNotNeeded,
|
||||
ensureAngularDevKitPeerDependenciesAreInstalled,
|
||||
formatFilesTask,
|
||||
getAllProjects,
|
||||
getWorkspaceRootFileTypesInfo,
|
||||
@ -40,6 +41,7 @@ export async function migrateFromAngularCli(
|
||||
const options = normalizeOptions(tree, rawOptions, projects);
|
||||
|
||||
const angularJson = readJson(tree, 'angular.json') as any;
|
||||
ensureAngularDevKitPeerDependenciesAreInstalled(tree);
|
||||
|
||||
if (options.preserveAngularCliLayout) {
|
||||
addDependenciesToPackageJson(
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
import { addDependenciesToPackageJson, readJson, Tree } from '@nrwl/devkit';
|
||||
import { getPkgVersionForAngularMajorVersion } from '../../../utils/version-utils';
|
||||
import { getInstalledAngularMajorVersion } from '../../utils/version-utils';
|
||||
|
||||
export function ensureAngularDevKitPeerDependenciesAreInstalled(
|
||||
tree: Tree
|
||||
): void {
|
||||
const packagesToInstall = [
|
||||
'@angular-devkit/core',
|
||||
'@angular-devkit/schematics',
|
||||
'@schematics/angular',
|
||||
];
|
||||
|
||||
const { devDependencies, dependencies } = readJson(tree, 'package.json');
|
||||
let angularCliVersion =
|
||||
devDependencies?.['@angular/cli'] ?? dependencies?.['@angular/cli'];
|
||||
|
||||
if (!angularCliVersion) {
|
||||
const angularMajorVersion = getInstalledAngularMajorVersion(tree);
|
||||
const angularDevkitVersion = getPkgVersionForAngularMajorVersion(
|
||||
'angularDevkitVersion',
|
||||
angularMajorVersion
|
||||
);
|
||||
angularCliVersion = angularDevkitVersion;
|
||||
}
|
||||
|
||||
const filteredPackages = packagesToInstall
|
||||
.filter((pkg) => !devDependencies?.[pkg] && !dependencies?.[pkg])
|
||||
.reduce((allPkgs, pkg) => {
|
||||
allPkgs[pkg] = angularCliVersion;
|
||||
return allPkgs;
|
||||
}, {} as Record<string, string>);
|
||||
|
||||
addDependenciesToPackageJson(tree, {}, filteredPackages);
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
export * from './dependencies';
|
||||
export * from './file-change-recorder';
|
||||
export * from './format-files-task';
|
||||
export * from './logger';
|
||||
|
||||
@ -18,13 +18,13 @@ export default async function (tree: Tree) {
|
||||
);
|
||||
|
||||
const angularCliVersion =
|
||||
pkgJson.devDependencies['@angular/cli'] ??
|
||||
pkgJson.dependencies['@angular/cli'] ??
|
||||
pkgJson.devDependencies?.['@angular/cli'] ??
|
||||
pkgJson.dependencies?.['@angular/cli'] ??
|
||||
angularDevkitVersion;
|
||||
|
||||
const filteredPackages: Record<string, string> = packagesToInstall
|
||||
.filter(
|
||||
(pkg) => !pkgJson.devDependencies[pkg] && !pkgJson.dependencies[pkg]
|
||||
(pkg) => !pkgJson.devDependencies?.[pkg] && !pkgJson.dependencies?.[pkg]
|
||||
)
|
||||
.reduce((allPkgs, pkg) => ({ ...allPkgs, [pkg]: angularCliVersion }), {});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user