| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- "use strict";
- /**
- * @license
- * Copyright Google Inc. 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");
- const config_1 = require("../../utility/config");
- const json_utils_1 = require("../../utility/json-utils");
- const workspace_models_1 = require("../../utility/workspace-models");
- const utils_1 = require("./utils");
- /**
- * Updates a pre version 9 library to version 9 Ivy library.
- *
- * The main things that this migrations does are:
- * - Creates a production configuration for VE compilations.
- * - Create a prod tsconfig for which disables Ivy and enables VE compilations.
- */
- function updateLibraries() {
- return (tree, context) => {
- const logger = context.logger;
- const workspacePath = config_1.getWorkspacePath(tree);
- const workspace = utils_1.getWorkspace(tree);
- const recorder = tree.beginUpdate(workspacePath);
- for (const { target, project } of utils_1.getTargets(workspace, 'build', workspace_models_1.Builders.NgPackagr)) {
- const projectRoot = json_utils_1.findPropertyInAstObject(project, 'root');
- if (!projectRoot || projectRoot.kind !== 'string') {
- break;
- }
- const configurations = json_utils_1.findPropertyInAstObject(target, 'configurations');
- const tsConfig = core_1.join(core_1.normalize(projectRoot.value), 'tsconfig.lib.prod.json');
- if (!configurations || configurations.kind !== 'object') {
- // Configurations doesn't exist.
- json_utils_1.appendPropertyInAstObject(recorder, target, 'configurations', { production: { tsConfig } }, 10);
- createTsConfig(tree, tsConfig);
- continue;
- }
- const prodConfig = json_utils_1.findPropertyInAstObject(configurations, 'production');
- if (!prodConfig || prodConfig.kind !== 'object') {
- // Production configuration doesn't exist.
- json_utils_1.insertPropertyInAstObjectInOrder(recorder, configurations, 'production', { tsConfig }, 12);
- createTsConfig(tree, tsConfig);
- continue;
- }
- const tsConfigOption = json_utils_1.findPropertyInAstObject(prodConfig, 'tsConfig');
- if (!tsConfigOption || tsConfigOption.kind !== 'string') {
- // No tsconfig for production has been defined.
- json_utils_1.insertPropertyInAstObjectInOrder(recorder, prodConfig, 'tsConfig', tsConfig, 14);
- createTsConfig(tree, tsConfig);
- continue;
- }
- // tsConfig for production already exists.
- const tsConfigPath = tsConfigOption.value;
- const tsConfigAst = utils_1.readJsonFileAsAstObject(tree, tsConfigPath);
- if (!tsConfigAst) {
- logger.warn(`Cannot find file: ${tsConfigPath}`);
- continue;
- }
- const tsConfigRecorder = tree.beginUpdate(tsConfigPath);
- const ngCompilerOptions = json_utils_1.findPropertyInAstObject(tsConfigAst, 'angularCompilerOptions');
- if (!ngCompilerOptions) {
- // Add angularCompilerOptions to the production tsConfig
- json_utils_1.appendPropertyInAstObject(tsConfigRecorder, tsConfigAst, 'angularCompilerOptions', { enableIvy: false }, 2);
- tree.commitUpdate(tsConfigRecorder);
- continue;
- }
- if (ngCompilerOptions.kind === 'object') {
- const enableIvy = json_utils_1.findPropertyInAstObject(ngCompilerOptions, 'enableIvy');
- // Add enableIvy false
- if (!enableIvy) {
- json_utils_1.appendPropertyInAstObject(tsConfigRecorder, ngCompilerOptions, 'enableIvy', false, 4);
- tree.commitUpdate(tsConfigRecorder);
- continue;
- }
- if (enableIvy.kind !== 'false') {
- const { start, end } = enableIvy;
- tsConfigRecorder.remove(start.offset, end.offset - start.offset);
- tsConfigRecorder.insertLeft(start.offset, 'false');
- tree.commitUpdate(tsConfigRecorder);
- }
- }
- }
- tree.commitUpdate(recorder);
- return tree;
- };
- }
- exports.updateLibraries = updateLibraries;
- function createTsConfig(tree, tsConfigPath) {
- const tsConfigContent = {
- extends: './tsconfig.lib.json',
- angularCompilerOptions: {
- enableIvy: false,
- },
- };
- if (!tree.exists(tsConfigPath)) {
- tree.create(tsConfigPath, JSON.stringify(tsConfigContent, undefined, 2));
- }
- }
|