UNPKG

@nxworker/workspace

Version:

Nx plugin providing generators for managing workspace files, including the move-file generator for safely moving files between projects while updating all imports

53 lines (52 loc) 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "updateImportPathsInDependentProjects", { enumerable: true, get: function() { return updateImportPathsInDependentProjects; } }); const _devkit = require("@nx/devkit"); const _checkforimportsinproject = require("../validation/check-for-imports-in-project"); const _updateimportstorelative = require("./update-imports-to-relative"); const _updateimportsbyaliasinproject = require("./update-imports-by-alias-in-project"); async function updateImportPathsInDependentProjects(tree, projectGraph, projects, sourceProjectName, sourceImportPath, targetImportPath, target, getCachedDependentProjectsFn, getProjectSourceFilesFn) { const { targetProjectName, targetRelativePath } = target ?? {}; const dependentProjectNames = Array.from(getCachedDependentProjectsFn(projectGraph, sourceProjectName)); let candidates; if (dependentProjectNames.length) { // Use dependency graph when available candidates = dependentProjectNames.map((name)=>{ const project = projects.get(name); return project ? [ name, project ] : null; }).filter((entry)=>entry !== null); } else { // Filter: check all projects for imports const projectEntries = Array.from(projects.entries()); candidates = projectEntries.filter(([, project])=>(0, _checkforimportsinproject.checkForImportsInProject)(tree, project, sourceImportPath, getProjectSourceFilesFn)).map(([name, project])=>[ name, project ]); } // Preload project file caches for all dependent projects to improve performance // This avoids sequential file tree traversals when updating imports candidates.forEach(([, dependentProject])=>{ getProjectSourceFilesFn(tree, dependentProject.root); }); candidates.forEach(([dependentName, dependentProject])=>{ _devkit.logger.verbose(`Checking project ${dependentName} for imports`); // If the dependent project is the target project, use relative imports if (targetProjectName && targetRelativePath && dependentName === targetProjectName) { _devkit.logger.verbose(`Updating imports in target project ${dependentName} to use relative paths`); (0, _updateimportstorelative.updateImportsToRelative)(tree, dependentProject, sourceImportPath, targetRelativePath, [], getProjectSourceFilesFn); } else { (0, _updateimportsbyaliasinproject.updateImportsByAliasInProject)(tree, dependentProject, sourceImportPath, targetImportPath, getProjectSourceFilesFn); } }); } //# sourceMappingURL=update-import-paths-in-dependent-projects.js.map