UNPKG

@schematics/angular

Version:
53 lines (52 loc) 1.93 kB
"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.dev/license */ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const json_file_1 = require("../../utility/json-file"); const workspace_1 = require("../../utility/workspace"); function default_1() { return async (host) => { const uniqueTsConfigs = new Set(); if (host.exists('tsconfig.json')) { // Workspace level tsconfig uniqueTsConfigs.add('tsconfig.json'); } const workspace = await (0, workspace_1.getWorkspace)(host); for (const [, target] of (0, workspace_1.allWorkspaceTargets)(workspace)) { for (const [, opt] of (0, workspace_1.allTargetOptions)(target)) { if (typeof opt?.tsConfig === 'string') { uniqueTsConfigs.add(opt.tsConfig); } } } for (const tsConfig of uniqueTsConfigs) { if (host.exists(tsConfig)) { updateModuleResolution(host, tsConfig); } } }; } function updateModuleResolution(host, tsConfigPath) { const json = new json_file_1.JSONFile(host, tsConfigPath); const jsonPath = ['compilerOptions']; const compilerOptions = json.get(jsonPath); if (compilerOptions && typeof compilerOptions === 'object') { const { moduleResolution, module } = compilerOptions; if (typeof moduleResolution !== 'string' || moduleResolution.toLowerCase() === 'bundler') { return; } if (typeof module === 'string' && module.toLowerCase() === 'preserve') { return; } json.modify(jsonPath, { ...compilerOptions, 'moduleResolution': 'bundler', }); } }