72 lines
1.5 KiB
TypeScript
72 lines
1.5 KiB
TypeScript
import {
|
|
addDependenciesToPackageJson,
|
|
GeneratorCallback,
|
|
readNxJson,
|
|
removeDependenciesFromPackageJson,
|
|
runTasksInSerial,
|
|
Tree,
|
|
updateNxJson,
|
|
} from '@nx/devkit';
|
|
import {
|
|
cypressVersion,
|
|
nxVersion,
|
|
typesNodeVersion,
|
|
} from '../../utils/versions';
|
|
import { Schema } from './schema';
|
|
import { initGenerator } from '@nx/js';
|
|
|
|
function setupE2ETargetDefaults(tree: Tree) {
|
|
const nxJson = readNxJson(tree);
|
|
|
|
if (!nxJson.namedInputs) {
|
|
return;
|
|
}
|
|
|
|
// E2e targets depend on all their project's sources + production sources of dependencies
|
|
nxJson.targetDefaults ??= {};
|
|
|
|
const productionFileSet = !!nxJson.namedInputs?.production;
|
|
nxJson.targetDefaults.e2e ??= {};
|
|
nxJson.targetDefaults.e2e.inputs ??= [
|
|
'default',
|
|
productionFileSet ? '^production' : '^default',
|
|
];
|
|
|
|
updateNxJson(tree, nxJson);
|
|
}
|
|
|
|
function updateDependencies(tree: Tree) {
|
|
removeDependenciesFromPackageJson(tree, ['@nx/cypress'], []);
|
|
|
|
return addDependenciesToPackageJson(
|
|
tree,
|
|
{},
|
|
{
|
|
['@nx/cypress']: nxVersion,
|
|
cypress: cypressVersion,
|
|
'@types/node': typesNodeVersion,
|
|
}
|
|
);
|
|
}
|
|
|
|
export async function cypressInitGenerator(tree: Tree, options: Schema) {
|
|
setupE2ETargetDefaults(tree);
|
|
|
|
const tasks: GeneratorCallback[] = [];
|
|
|
|
tasks.push(
|
|
await initGenerator(tree, {
|
|
...options,
|
|
skipFormat: true,
|
|
})
|
|
);
|
|
|
|
if (!options.skipPackageJson) {
|
|
tasks.push(updateDependencies(tree));
|
|
}
|
|
|
|
return runTasksInSerial(...tasks);
|
|
}
|
|
|
|
export default cypressInitGenerator;
|