/** * @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 */ import { json } from '@angular-devkit/core'; import { Rule } from '@angular-devkit/schematics'; import { updateWorkspace } from '../../utility/workspace'; export default function (): Rule { return updateWorkspace((workspace) => { // Update root level schematics options if present const rootSchematics = workspace.extensions.schematics; if (rootSchematics && json.isJsonObject(rootSchematics)) { updateSchematicsField(rootSchematics); } // Update project level schematics options if present for (const [, project] of workspace.projects) { const projectSchematics = project.extensions.schematics; if (projectSchematics && json.isJsonObject(projectSchematics)) { updateSchematicsField(projectSchematics); } } }); } function updateSchematicsField(schematics: json.JsonObject): void { for (const [schematicName, schematicOptions] of Object.entries(schematics)) { if (!json.isJsonObject(schematicOptions)) { continue; } if (schematicName.startsWith('@schematics/angular')) { delete schematicOptions.lintFix; } switch (schematicName) { case '@schematics/angular:service-worker': delete schematicOptions.configuration; break; case '@schematics/angular:web-worker': delete schematicOptions.target; break; case '@schematics/angular:application': delete schematicOptions.legacyBrowsers; break; default: break; } } }