UNPKG

2.36 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.updateJestConfig = void 0;
4const devkit_1 = require("@nrwl/devkit");
5const get_source_nodes_1 = require("../../../utilities/typescript/get-source-nodes");
6const typescript_1 = require("typescript");
7const path_1 = require("path");
8function isUsingUtilityFunction(host) {
9 return host.read('jest.config.ts').toString().includes('getJestProjects()');
10}
11/**
12 * Updates the root jest config projects array and removes the project.
13 */
14function updateJestConfig(tree, schema, projectConfig) {
15 const projectToRemove = schema.projectName;
16 if (!tree.exists('jest.config.ts') ||
17 !tree.exists((0, path_1.join)(projectConfig.root, 'jest.config.ts')) ||
18 isUsingUtilityFunction(tree)) {
19 return;
20 }
21 const contents = tree.read('jest.config.ts', 'utf-8');
22 const sourceFile = (0, typescript_1.createSourceFile)('jest.config.ts', contents, typescript_1.ScriptTarget.Latest);
23 const sourceNodes = (0, get_source_nodes_1.getSourceNodes)(sourceFile);
24 const projectsAssignment = sourceNodes.find((node) => (0, typescript_1.isPropertyAssignment)(node) &&
25 node.name.getText(sourceFile) === 'projects' &&
26 (0, typescript_1.isArrayLiteralExpression)(node.initializer));
27 if (!projectsAssignment) {
28 throw Error(`Could not remove ${projectToRemove} from projects in /jest.config.ts. Please remove ${projectToRemove} from your projects.`);
29 }
30 const projectsArray = projectsAssignment.initializer;
31 const project = projectsArray.elements.find((item) => (0, typescript_1.isStringLiteral)(item) &&
32 item.text.startsWith(`<rootDir>/${projectConfig.root}`));
33 if (!project) {
34 console.warn(`Could not find ${projectToRemove} in projects in /jest.config.ts.`);
35 return;
36 }
37 const previousProject = projectsArray.elements[projectsArray.elements.indexOf(project) - 1];
38 const start = previousProject
39 ? previousProject.getEnd()
40 : project.getStart(sourceFile);
41 tree.write('jest.config.ts', (0, devkit_1.applyChangesToString)(contents, [
42 {
43 type: devkit_1.ChangeType.Delete,
44 start,
45 length: project.getEnd() - start,
46 },
47 ]));
48}
49exports.updateJestConfig = updateJestConfig;
50//# sourceMappingURL=update-jest-config.js.map
\No newline at end of file