123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getWorkspace = exports.getWorkspacePath = exports.addSchematics = exports.addCli = exports.addArchitectBuilder = exports.addAsset = exports.addStyle = exports.getDefaultAngularAppName = exports.writeConfig = exports.readConfig = void 0;
- const schematics_1 = require("@angular-devkit/schematics");
- const jsonc_parser_1 = require("jsonc-parser");
- const ANGULAR_JSON_PATH = 'angular.json';
- function readConfig(host) {
- return host.readJson(ANGULAR_JSON_PATH);
- }
- exports.readConfig = readConfig;
- function writeConfig(host, config) {
- host.overwrite(ANGULAR_JSON_PATH, JSON.stringify(config, null, 2));
- }
- exports.writeConfig = writeConfig;
- function isAngularBrowserProject(projectConfig) {
- if (projectConfig.projectType === 'application') {
- const buildConfig = projectConfig.architect.build;
- // Angular 16 and lower
- const legacyAngularBuilder = buildConfig.builder === '@angular-devkit/build-angular:browser';
- // Angular 17+
- const modernAngularBuilder = buildConfig.builder === '@angular-devkit/build-angular:application';
- return legacyAngularBuilder || modernAngularBuilder;
- }
- return false;
- }
- function getDefaultAngularAppName(config) {
- const projects = config.projects;
- const projectNames = Object.keys(projects);
- for (const projectName of projectNames) {
- const projectConfig = projects[projectName];
- if (isAngularBrowserProject(projectConfig)) {
- return projectName;
- }
- }
- return projectNames[0];
- }
- exports.getDefaultAngularAppName = getDefaultAngularAppName;
- function getAngularJson(config, projectName) {
- // eslint-disable-next-line no-prototype-builtins
- if (!config.projects.hasOwnProperty(projectName)) {
- throw new schematics_1.SchematicsException(`Could not find project: ${projectName}`);
- }
- const projectConfig = config.projects[projectName];
- if (isAngularBrowserProject(projectConfig)) {
- return projectConfig;
- }
- if (config.projectType !== 'application') {
- throw new schematics_1.SchematicsException(`Invalid projectType for ${projectName}: ${config.projectType}`);
- }
- else {
- const buildConfig = projectConfig.architect.build;
- throw new schematics_1.SchematicsException(`Invalid builder for ${projectName}: ${buildConfig.builder}`);
- }
- }
- function addStyle(host, projectName, stylePath) {
- const config = readConfig(host);
- const angularJson = getAngularJson(config, projectName);
- angularJson.architect.build.options.styles.push({
- input: stylePath,
- });
- writeConfig(host, config);
- }
- exports.addStyle = addStyle;
- function addAsset(host, projectName, architect, asset) {
- const config = readConfig(host);
- const angularJson = getAngularJson(config, projectName);
- const target = angularJson.architect[architect];
- if (target) {
- target.options.assets.push(asset);
- writeConfig(host, config);
- }
- }
- exports.addAsset = addAsset;
- function addArchitectBuilder(host, projectName, builderName, builderOpts) {
- const config = readConfig(host);
- const angularJson = getAngularJson(config, projectName);
- angularJson.architect[builderName] = builderOpts;
- writeConfig(host, config);
- }
- exports.addArchitectBuilder = addArchitectBuilder;
- /**
- * Updates the angular.json to add an additional schematic collection
- * to the CLI configuration.
- */
- function addCli(host, collectionName) {
- const angularJson = readConfig(host);
- if (angularJson.cli === undefined) {
- angularJson.cli = {};
- }
- if (angularJson.cli.schematicCollections === undefined) {
- angularJson.cli.schematicCollections = [];
- }
- angularJson.cli.schematicCollections.push(collectionName);
- writeConfig(host, angularJson);
- }
- exports.addCli = addCli;
- function addSchematics(host, schematicName, schematicOpts) {
- const angularJson = readConfig(host);
- if (angularJson.schematics === undefined) {
- angularJson.schematics = {};
- }
- angularJson.schematics[schematicName] = schematicOpts;
- writeConfig(host, angularJson);
- }
- exports.addSchematics = addSchematics;
- function getWorkspacePath(host) {
- const possibleFiles = ['/angular.json', '/.angular.json'];
- const path = possibleFiles.filter((path) => host.exists(path))[0];
- return path;
- }
- exports.getWorkspacePath = getWorkspacePath;
- function getWorkspace(host) {
- const path = getWorkspacePath(host);
- const configBuffer = host.read(path);
- if (configBuffer === null) {
- throw new schematics_1.SchematicsException(`Could not find (${path})`);
- }
- const content = configBuffer.toString();
- return (0, jsonc_parser_1.parse)(content);
- }
- exports.getWorkspace = getWorkspace;
|