| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- "use strict";
- /**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- const core_1 = require("@angular-devkit/core");
- /** Name of the default Angular CLI workspace configuration files. */
- const defaultWorkspaceConfigPaths = ['/angular.json', '/.angular.json'];
- /**
- * Gets all tsconfig paths from a CLI project by reading the workspace configuration
- * and looking for common tsconfig locations.
- */
- function getProjectTsConfigPaths(tree) {
- // Start with some tsconfig paths that are generally used within CLI projects. Note
- // that we are not interested in IDE-specific tsconfig files (e.g. /tsconfig.json)
- const buildPaths = new Set([]);
- const testPaths = new Set([]);
- // Add any tsconfig directly referenced in a build or test task of the angular.json workspace.
- const workspace = getWorkspaceConfigGracefully(tree);
- if (workspace) {
- const projects = Object.keys(workspace.projects).map(name => workspace.projects[name]);
- for (const project of projects) {
- const buildPath = getTargetTsconfigPath(project, 'build');
- const testPath = getTargetTsconfigPath(project, 'test');
- if (buildPath) {
- buildPaths.add(buildPath);
- }
- if (testPath) {
- testPaths.add(testPath);
- }
- }
- }
- // Filter out tsconfig files that don't exist in the CLI project.
- return {
- buildPaths: Array.from(buildPaths).filter(p => tree.exists(p)),
- testPaths: Array.from(testPaths).filter(p => tree.exists(p)),
- };
- }
- exports.getProjectTsConfigPaths = getProjectTsConfigPaths;
- /** Gets the tsconfig path from the given target within the specified project. */
- function getTargetTsconfigPath(project, targetName) {
- if (project.targets && project.targets[targetName] && project.targets[targetName].options &&
- project.targets[targetName].options.tsConfig) {
- return core_1.normalize(project.targets[targetName].options.tsConfig);
- }
- if (project.architect && project.architect[targetName] && project.architect[targetName].options &&
- project.architect[targetName].options.tsConfig) {
- return core_1.normalize(project.architect[targetName].options.tsConfig);
- }
- return null;
- }
- /**
- * Resolve the workspace configuration of the specified tree gracefully. We cannot use the utility
- * functions from the default Angular schematics because those might not be present in older
- * versions of the CLI. Also it's important to resolve the workspace gracefully because
- * the CLI project could be still using `.angular-cli.json` instead of thew new config.
- */
- function getWorkspaceConfigGracefully(tree) {
- const path = defaultWorkspaceConfigPaths.find(filePath => tree.exists(filePath));
- const configBuffer = tree.read(path);
- if (!path || !configBuffer) {
- return null;
- }
- try {
- // Parse the workspace file as JSON5 which is also supported for CLI
- // workspace configurations.
- return core_1.parseJson(configBuffer.toString(), core_1.JsonParseMode.Json5);
- }
- catch (e) {
- return null;
- }
- }
- //# sourceMappingURL=project-tsconfig-paths.js.map
|