cleanup(angular): remove v14 folder for init (#15816)
This commit is contained in:
parent
44478fb57e
commit
ec1d8e1bf9
@ -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;
|
||||
@ -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;
|
||||
}
|
||||
@ -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,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user