@nrwl/workspace
Version:
55 lines • 2.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateJestConfig = void 0;
const devkit_1 = require("@nrwl/devkit");
const get_source_nodes_1 = require("../../../utilities/typescript/get-source-nodes");
const path_1 = require("path");
const typescript_1 = require("../../../utilities/typescript");
let tsModule;
function isUsingUtilityFunction(host) {
return host.read('jest.config.ts').toString().includes('getJestProjects()');
}
/**
* Updates the root jest config projects array and removes the project.
*/
function updateJestConfig(tree, schema, projectConfig) {
if (!tsModule) {
tsModule = (0, typescript_1.ensureTypescript)();
}
const { createSourceFile, ScriptTarget, isPropertyAssignment, isArrayLiteralExpression, isStringLiteral, } = tsModule;
const projectToRemove = schema.projectName;
if (!tree.exists('jest.config.ts') ||
!tree.exists((0, path_1.join)(projectConfig.root, 'jest.config.ts')) ||
isUsingUtilityFunction(tree)) {
return;
}
const contents = tree.read('jest.config.ts', 'utf-8');
const sourceFile = createSourceFile('jest.config.ts', contents, ScriptTarget.Latest);
const sourceNodes = (0, get_source_nodes_1.getSourceNodes)(sourceFile);
const projectsAssignment = sourceNodes.find((node) => isPropertyAssignment(node) &&
node.name.getText(sourceFile) === 'projects' &&
isArrayLiteralExpression(node.initializer));
if (!projectsAssignment) {
throw Error(`Could not remove ${projectToRemove} from projects in /jest.config.ts. Please remove ${projectToRemove} from your projects.`);
}
const projectsArray = projectsAssignment.initializer;
const project = projectsArray.elements.find((item) => isStringLiteral(item) &&
item.text.startsWith(`<rootDir>/${projectConfig.root}`));
if (!project) {
console.warn(`Could not find ${projectToRemove} in projects in /jest.config.ts.`);
return;
}
const previousProject = projectsArray.elements[projectsArray.elements.indexOf(project) - 1];
const start = previousProject
? previousProject.getEnd()
: project.getStart(sourceFile);
tree.write('jest.config.ts', (0, devkit_1.applyChangesToString)(contents, [
{
type: devkit_1.ChangeType.Delete,
start,
length: project.getEnd() - start,
},
]));
}
exports.updateJestConfig = updateJestConfig;
//# sourceMappingURL=update-jest-config.js.map
;