nx/packages/angular/src/generators/application/lib/update-e2e-project.ts

67 lines
2.0 KiB
TypeScript

import type { ProjectConfiguration, Tree } from '@nrwl/devkit';
import {
addProjectConfiguration,
offsetFromRoot,
readProjectConfiguration,
updateJson,
updateProjectConfiguration,
} from '@nrwl/devkit';
import { getRelativePathToRootTsConfig } from '@nrwl/js';
import type { NormalizedSchema } from './normalized-schema';
export function updateE2eProject(tree: Tree, options: NormalizedSchema) {
const spec = `${options.e2eProjectRoot}/src/app.e2e-spec.ts`;
const content = tree.read(spec, 'utf-8');
tree.write(
spec,
content.replace(
`${options.name} app is running!`,
`Welcome ${options.name}`
)
);
const page = `${options.e2eProjectRoot}/src/app.po.ts`;
const pageContent = tree.read(page, 'utf-8');
tree.write(page, pageContent.replace(`.content span`, `header h1`));
const proj = readProjectConfiguration(tree, options.name);
const project: ProjectConfiguration = {
root: options.e2eProjectRoot,
projectType: 'application',
targets: {
e2e: proj.targets.e2e,
},
implicitDependencies: [options.name],
tags: [],
};
project.targets.e2e.options.protractorConfig = `${options.e2eProjectRoot}/protractor.conf.js`;
addProjectConfiguration(tree, options.e2eProjectName, project);
delete proj.targets.e2e;
updateProjectConfiguration(tree, options.name, proj);
// update tsconfig e2e
if (!tree.exists(`${options.e2eProjectRoot}/tsconfig.e2e.json`)) {
tree.write(`${options.e2eProjectRoot}/tsconfig.e2e.json`, '{}');
}
updateJson(tree, `${options.e2eProjectRoot}/tsconfig.e2e.json`, (json) => {
return {
...json,
extends: `./tsconfig.json`,
compilerOptions: {
...json.compilerOptions,
outDir: `${offsetFromRoot(options.e2eProjectRoot)}dist/out-tsc`,
},
};
});
// update tsconfig
updateJson(tree, `${options.e2eProjectRoot}/tsconfig.json`, (json) => {
return {
...json,
extends: getRelativePathToRootTsConfig(tree, options.e2eProjectRoot),
};
});
}