cleanup(angular): remove v14 folder for init (#15816)

This commit is contained in:
Colum Ferry 2023-03-22 14:36:22 +00:00 committed by GitHub
parent 44478fb57e
commit ec1d8e1bf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 247 deletions

View File

@ -1,209 +0,0 @@
import { cypressInitGenerator } from '@nrwl/cypress';
import {
addDependenciesToPackageJson,
ensurePackage,
formatFiles,
GeneratorCallback,
logger,
readNxJson,
runTasksInSerial,
Tree,
updateNxJson,
} from '@nrwl/devkit';
import { jestInitGenerator } from '@nrwl/jest';
import { Linter } from '@nrwl/linter';
import { initGenerator as jsInitGenerator } from '@nrwl/js';
import { backwardCompatibleVersions } from '../../../utils/backward-compatible-versions';
import { E2eTestRunner, UnitTestRunner } from '../../../utils/test-runners';
import {
addDependenciesToPackageJsonIfDontExist,
getInstalledPackageVersion,
} from '../../utils/version-utils';
import { Schema } from './schema';
export async function angularInitGenerator(
host: Tree,
rawOptions: Schema
): Promise<GeneratorCallback> {
const options = normalizeOptions(rawOptions);
setDefaults(host, options);
const tasks: GeneratorCallback[] = [];
const peerDepsToInstall = [
'@angular-devkit/core',
'@angular-devkit/schematics',
'@schematics/angular',
];
let devkitVersion: string;
peerDepsToInstall.forEach((pkg) => {
const packageVersion = getInstalledPackageVersion(host, pkg);
if (!packageVersion) {
devkitVersion ??=
getInstalledPackageVersion(host, '@angular-devkit/build-angular') ??
backwardCompatibleVersions.angularV14.angularDevkitVersion;
try {
ensurePackage(pkg, devkitVersion);
} catch {
// @schematics/angular cannot be required so this fails but this will still allow wrapping the schematic later on
}
if (!options.skipPackageJson) {
tasks.push(
addDependenciesToPackageJson(host, {}, { [pkg]: devkitVersion })
);
}
}
});
const jsTask = await jsInitGenerator(host, {
...options,
js: false,
tsConfigName: options.rootProject ? 'tsconfig.json' : 'tsconfig.base.json',
skipFormat: true,
});
tasks.push(jsTask);
if (!options.skipPackageJson) {
tasks.push(updateDependencies(host));
}
const unitTestTask = await addUnitTestRunner(host, options);
tasks.push(unitTestTask);
const e2eTask = await addE2ETestRunner(host, options);
tasks.push(e2eTask);
addGitIgnoreEntry(host, '.angular');
if (!options.skipFormat) {
await formatFiles(host);
}
return runTasksInSerial(...tasks);
}
function normalizeOptions(options: Schema): Required<Schema> {
return {
e2eTestRunner: options.e2eTestRunner ?? E2eTestRunner.Cypress,
linter: options.linter ?? Linter.EsLint,
skipFormat: options.skipFormat ?? false,
skipInstall: options.skipInstall ?? false,
skipPackageJson: options.skipPackageJson ?? false,
style: options.style ?? 'css',
unitTestRunner: options.unitTestRunner ?? UnitTestRunner.Jest,
rootProject: options.rootProject,
};
}
function setDefaults(host: Tree, options: Schema) {
const nxJson = readNxJson(host);
nxJson.generators = nxJson.generators || {};
nxJson.generators['@nrwl/angular:application'] = {
style: options.style,
linter: options.linter,
unitTestRunner: options.unitTestRunner,
e2eTestRunner: options.e2eTestRunner,
...(nxJson.generators['@nrwl/angular:application'] || {}),
};
nxJson.generators['@nrwl/angular:library'] = {
linter: options.linter,
unitTestRunner: options.unitTestRunner,
...(nxJson.generators['@nrwl/angular:library'] || {}),
};
nxJson.generators['@nrwl/angular:component'] = {
style: options.style,
...(nxJson.generators['@nrwl/angular:component'] || {}),
};
updateNxJson(host, nxJson);
}
function updateDependencies(tree: Tree): GeneratorCallback {
const angularVersion =
getInstalledPackageVersion(tree, '@angular/core') ??
backwardCompatibleVersions.angularV14.angularVersion;
const angularDevkitVersion =
getInstalledPackageVersion(tree, '@angular-devkit/build-angular') ??
backwardCompatibleVersions.angularV14.angularDevkitVersion;
return addDependenciesToPackageJsonIfDontExist(
tree,
{
'@angular/animations': angularVersion,
'@angular/common': angularVersion,
'@angular/compiler': angularVersion,
'@angular/core': angularVersion,
'@angular/forms': angularVersion,
'@angular/platform-browser': angularVersion,
'@angular/platform-browser-dynamic': angularVersion,
'@angular/router': angularVersion,
rxjs: backwardCompatibleVersions.angularV14.rxjsVersion,
tslib: backwardCompatibleVersions.angularV14.tsLibVersion,
'zone.js': backwardCompatibleVersions.angularV14.zoneJsVersion,
},
{
'@angular/cli': angularDevkitVersion,
'@angular/compiler-cli': angularVersion,
'@angular/language-service': angularVersion,
'@angular-devkit/build-angular': angularDevkitVersion,
}
);
}
async function addUnitTestRunner(
tree: Tree,
options: Schema
): Promise<GeneratorCallback> {
switch (options.unitTestRunner) {
case UnitTestRunner.Jest:
if (!options.skipPackageJson) {
addDependenciesToPackageJsonIfDontExist(
tree,
{},
{
'jest-preset-angular':
backwardCompatibleVersions.angularV14.jestPresetAngularVersion,
}
);
}
return jestInitGenerator(tree, {
skipPackageJson: options.skipPackageJson,
});
default:
return () => {};
}
}
async function addE2ETestRunner(
tree: Tree,
options: Schema
): Promise<GeneratorCallback> {
switch (options.e2eTestRunner) {
case E2eTestRunner.Cypress:
return await cypressInitGenerator(tree, {
skipPackageJson: options.skipPackageJson,
});
default:
return () => {};
}
}
function addGitIgnoreEntry(host: Tree, entry: string) {
if (host.exists('.gitignore')) {
let content = host.read('.gitignore', 'utf-8');
if (/^\.angular$/gm.test(content)) {
return;
}
content = `${content}\n${entry}\n`;
host.write('.gitignore', content);
} else {
logger.warn(`Couldn't find .gitignore file to update`);
}
}
export default angularInitGenerator;

View File

@ -1,14 +0,0 @@
import { Linter } from '@nrwl/linter';
import { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners';
import type { Styles } from '../utils/types';
export interface Schema {
unitTestRunner?: UnitTestRunner;
e2eTestRunner?: E2eTestRunner;
skipFormat?: boolean;
skipInstall?: boolean;
style?: Styles;
linter?: Linter;
skipPackageJson?: boolean;
rootProject?: boolean;
}

View File

@ -13,8 +13,6 @@ import {
import { jestInitGenerator } from '@nrwl/jest';
import { Linter } from '@nrwl/linter';
import { initGenerator as jsInitGenerator } from '@nrwl/js';
import { join } from 'path';
import { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners';
import {
angularDevkitVersion,
@ -26,25 +24,17 @@ import {
} from '../../utils/versions';
import {
addDependenciesToPackageJsonIfDontExist,
getGeneratorDirectoryForInstalledAngularVersion,
getInstalledAngularVersionInfo,
getInstalledPackageVersion,
} from '../utils/version-utils';
import { backwardCompatibleVersions } from '../../utils/backward-compatible-versions';
import { Schema } from './schema';
export async function angularInitGenerator(
tree: Tree,
rawOptions: Schema
): Promise<GeneratorCallback> {
const generatorDirectory =
getGeneratorDirectoryForInstalledAngularVersion(tree);
if (generatorDirectory) {
let previousGenerator = await import(
join(__dirname, generatorDirectory, 'init')
);
await previousGenerator.default(tree, rawOptions);
return;
}
const installedAngularVersionInfo = getInstalledAngularVersionInfo(tree);
const tasks: GeneratorCallback[] = [];
const options = normalizeOptions(rawOptions);
@ -60,7 +50,9 @@ export async function angularInitGenerator(
if (!packageVersion) {
devkitVersion ??=
getInstalledPackageVersion(tree, '@angular-devkit/build-angular') ??
angularDevkitVersion;
(installedAngularVersionInfo.major === 14
? backwardCompatibleVersions.angularV14.angularDevkitVersion
: angularDevkitVersion);
try {
ensurePackage(pkg, devkitVersion);
@ -86,9 +78,13 @@ export async function angularInitGenerator(
tasks.push(jsTask);
if (!options.skipPackageJson) {
tasks.push(updateDependencies(tree));
tasks.push(updateDependencies(tree, installedAngularVersionInfo.major));
}
const unitTestTask = await addUnitTestRunner(tree, options);
const unitTestTask = await addUnitTestRunner(
tree,
options,
installedAngularVersionInfo.major
);
tasks.push(unitTestTask);
const e2eTask = await addE2ETestRunner(tree, options);
tasks.push(e2eTask);
@ -139,12 +135,20 @@ function setDefaults(host: Tree, options: Schema) {
updateNxJson(host, nxJson);
}
function updateDependencies(tree: Tree): GeneratorCallback {
function updateDependencies(
tree: Tree,
angularMajorVersion: number
): GeneratorCallback {
const angularVersionToInstall =
getInstalledPackageVersion(tree, '@angular/core') ?? angularVersion;
getInstalledPackageVersion(tree, '@angular/core') ??
(angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.angularVersion
: angularVersion);
const angularDevkitVersionToInstall =
getInstalledPackageVersion(tree, '@angular-devkit/build-angular') ??
angularDevkitVersion;
(angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.angularDevkitVersion
: angularDevkitVersion);
return addDependenciesToPackageJsonIfDontExist(
tree,
@ -157,9 +161,18 @@ function updateDependencies(tree: Tree): GeneratorCallback {
'@angular/platform-browser': angularVersionToInstall,
'@angular/platform-browser-dynamic': angularVersionToInstall,
'@angular/router': angularVersionToInstall,
rxjs: rxjsVersion,
tslib: tsLibVersion,
'zone.js': zoneJsVersion,
rxjs:
angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.rxjsVersion
: rxjsVersion,
tslib:
angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.tsLibVersion
: tsLibVersion,
'zone.js':
angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.zoneJsVersion
: zoneJsVersion,
},
{
'@angular/cli': angularDevkitVersionToInstall,
@ -172,7 +185,8 @@ function updateDependencies(tree: Tree): GeneratorCallback {
async function addUnitTestRunner(
tree: Tree,
options: Schema
options: Schema,
angularMajorVersion: number
): Promise<GeneratorCallback> {
switch (options.unitTestRunner) {
case UnitTestRunner.Jest:
@ -181,7 +195,10 @@ async function addUnitTestRunner(
tree,
{},
{
'jest-preset-angular': jestPresetAngularVersion,
'jest-preset-angular':
angularMajorVersion === 14
? backwardCompatibleVersions.angularV14.jestPresetAngularVersion
: jestPresetAngularVersion,
}
);
}