{
    "additionalProperties": false,
    "properties": {
        "$schema": {
            "type": "string"
        },
        "apps": {
            "additionalProperties": false,
            "description": "Properties of the different applications in this project.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "appRoot": {
                        "default": "app",
                        "description": "Directory where app files are placed.",
                        "type": "string"
                    },
                    "appShell": {
                        "description": "AppShell configuration.",
                        "properties": {
                            "app": {
                                "description": "Index or name of the related AppShell app.",
                                "type": "string"
                            },
                            "route": {
                                "description": "Default AppShell route to render.",
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "assets": {
                        "default": [],
                        "description": "List of application assets.",
                        "items": {
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "additionalProperties": false,
                                    "properties": {
                                        "allowOutsideOutDir": {
                                            "default": false,
                                            "description": "Allow assets to be copied outside the outDir.",
                                            "type": "boolean"
                                        },
                                        "glob": {
                                            "default": "",
                                            "description": "The pattern to match.",
                                            "type": "string"
                                        },
                                        "input": {
                                            "default": "",
                                            "description": "The dir to search within.",
                                            "type": "string"
                                        },
                                        "output": {
                                            "default": "",
                                            "description": "The output path (relative to the outDir).",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            ]
                        },
                        "type": "array"
                    },
                    "baseHref": {
                        "description": "Base url for the application being built.",
                        "type": "string"
                    },
                    "budgets": {
                        "default": [],
                        "description": "Threshold definitions for bundle sizes.",
                        "items": {
                            "properties": {
                                "baseline": {
                                    "description": "The baseline size for comparison.",
                                    "type": "string"
                                },
                                "error": {
                                    "description": "The threshold for error relative to the baseline (min & max).",
                                    "type": "string"
                                },
                                "maximumError": {
                                    "description": "The maximum threshold for error relative to the baseline.",
                                    "type": "string"
                                },
                                "maximumWarning": {
                                    "description": "The maximum threshold for warning relative to the baseline.",
                                    "type": "string"
                                },
                                "minimumError": {
                                    "description": "The minimum threshold for error relative to the baseline.",
                                    "type": "string"
                                },
                                "minimumWarning": {
                                    "description": "The minimum threshold for warning relative to the baseline.",
                                    "type": "string"
                                },
                                "name": {
                                    "description": "The name of the bundle",
                                    "type": "string"
                                },
                                "type": {
                                    "description": "The type of budget",
                                    "enum": [
                                        "bundle",
                                        "initial",
                                        "allScript",
                                        "all",
                                        "anyScript",
                                        "any"
                                    ],
                                    "type": "string"
                                },
                                "warning": {
                                    "description": "The threshold for warning relative to the baseline (min & max).",
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "type": "array"
                    },
                    "deployUrl": {
                        "description": "URL where files will be deployed.",
                        "type": "string"
                    },
                    "environmentSource": {
                        "description": "Source file for environment config.",
                        "type": "string"
                    },
                    "environments": {
                        "additionalProperties": true,
                        "description": "Name and corresponding file for environment config.",
                        "type": "object"
                    },
                    "index": {
                        "default": "index.html",
                        "description": "The name of the start HTML file.",
                        "type": "string"
                    },
                    "lazyModules": {
                        "description": "List of additional NgModule files that will be lazy loaded. (lazy router modules with be discovered automatically)",
                        "items": {
                            "minLength": 1,
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "main": {
                        "description": "The name of the main entry-point file.",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the app.",
                        "type": "string"
                    },
                    "outDir": {
                        "default": "dist/",
                        "description": "The output directory for build results.",
                        "type": "string"
                    },
                    "platform": {
                        "default": "browser",
                        "description": "The runtime platform of the app.",
                        "enum": [
                            "browser",
                            "server"
                        ],
                        "type": "string"
                    },
                    "polyfills": {
                        "description": "The name of the polyfills file.",
                        "type": "string"
                    },
                    "prefix": {
                        "description": "The prefix to apply to generated selectors.",
                        "type": "string"
                    },
                    "root": {
                        "description": "The root directory of the app.",
                        "type": "string"
                    },
                    "scripts": {
                        "additionalProperties": false,
                        "description": "Global scripts to be included in the build.",
                        "items": {
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "additionalProperties": true,
                                    "properties": {
                                        "input": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "input"
                                    ],
                                    "type": "object"
                                }
                            ]
                        },
                        "type": "array"
                    },
                    "serviceWorker": {
                        "default": false,
                        "description": "Experimental support for a service worker from @angular/service-worker.",
                        "type": "boolean"
                    },
                    "stylePreprocessorOptions": {
                        "additionalProperties": false,
                        "description": "Options to pass to style preprocessors",
                        "properties": {
                            "includePaths": {
                                "default": [],
                                "description": "Paths to include. Paths will be resolved to project root.",
                                "items": {
                                    "type": "string"
                                },
                                "type": "array"
                            }
                        },
                        "type": "object"
                    },
                    "styles": {
                        "additionalProperties": false,
                        "description": "Global styles to be included in the build.",
                        "items": {
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "additionalProperties": true,
                                    "properties": {
                                        "input": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            ]
                        },
                        "type": "array"
                    },
                    "test": {
                        "description": "The name of the test entry-point file.",
                        "type": "string"
                    },
                    "testTsconfig": {
                        "description": "The name of the TypeScript configuration file for unit tests.",
                        "type": "string"
                    },
                    "tsconfig": {
                        "default": "tsconfig.app.json",
                        "description": "The name of the TypeScript configuration file.",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "type": "array"
        },
        "defaults": {
            "additionalProperties": false,
            "description": "Specify the default values for generating.",
            "properties": {
                "build": {
                    "description": "Properties to be passed to the build command.",
                    "properties": {
                        "baseHref": {
                            "description": "Base url for the application being built.",
                            "type": "string"
                        },
                        "commonChunk": {
                            "default": true,
                            "description": "Use a separate bundle containing code used across multiple bundles.",
                            "type": "boolean"
                        },
                        "deleteOutputPath": {
                            "default": true,
                            "description": "Delete output path before build.",
                            "type": "boolean"
                        },
                        "namedChunks": {
                            "description": "Use file name for lazy loaded chunks.",
                            "type": "boolean"
                        },
                        "poll": {
                            "description": "Enable and define the file watching poll time period (milliseconds).",
                            "type": "number"
                        },
                        "preserveSymlinks": {
                            "default": false,
                            "description": "Do not use the real path when resolving modules.",
                            "type": "boolean"
                        },
                        "progress": {
                            "description": "The ssl key used by the server.",
                            "type": "boolean"
                        },
                        "showCircularDependencies": {
                            "default": true,
                            "description": "Show circular dependency warnings on builds.",
                            "type": "boolean"
                        },
                        "sourcemaps": {
                            "description": "Output sourcemaps.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "class": {
                    "description": "Options for generating a class.",
                    "properties": {
                        "spec": {
                            "default": false,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "component": {
                    "description": "Options for generating a component.",
                    "properties": {
                        "changeDetection": {
                            "description": "Specifies the change detection strategy.",
                            "enum": [
                                "Default",
                                "OnPush"
                            ],
                            "type": "string"
                        },
                        "flat": {
                            "default": false,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "inlineStyle": {
                            "default": false,
                            "description": "Specifies if the style will be in the ts file.",
                            "type": "boolean"
                        },
                        "inlineTemplate": {
                            "default": false,
                            "description": "Specifies if the template will be in the ts file.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": true,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        },
                        "viewEncapsulation": {
                            "description": "Specifies the view encapsulation strategy.",
                            "enum": [
                                "Emulated",
                                "Native",
                                "None"
                            ],
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "directive": {
                    "description": "Options for generating a directive.",
                    "properties": {
                        "flat": {
                            "default": true,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": true,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "guard": {
                    "description": "Options for generating a guard.",
                    "properties": {
                        "flat": {
                            "default": true,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": true,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "interface": {
                    "description": "Options for generating an interface.",
                    "properties": {
                        "prefix": {
                            "default": "",
                            "description": "Prefix to apply to interface names. (i.e. I)",
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "lintFix": {
                    "default": false,
                    "description": "Use lint to fix files after generation",
                    "type": "boolean"
                },
                "module": {
                    "description": "Options for generating a module.",
                    "properties": {
                        "flat": {
                            "default": false,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": false,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "pipe": {
                    "description": "Options for generating a pipe.",
                    "properties": {
                        "flat": {
                            "default": true,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": true,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "poll": {
                    "description": "How often to check for file updates.",
                    "type": "number"
                },
                "schematics": {
                    "additionalProperties": false,
                    "description": "Properties about schematics.",
                    "properties": {
                        "collection": {
                            "default": "@schematics/angular",
                            "description": "The schematics collection to use.",
                            "type": "string"
                        },
                        "newApp": {
                            "default": "application",
                            "description": "The new app schematic.",
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "serve": {
                    "description": "Properties to be passed to the serve command.",
                    "properties": {
                        "host": {
                            "default": "localhost",
                            "description": "The host the application will be served on.",
                            "type": "string"
                        },
                        "port": {
                            "default": 4200,
                            "description": "The port the application will be served on.",
                            "type": "number"
                        },
                        "proxyConfig": {
                            "description": "Proxy configuration file.",
                            "type": "string"
                        },
                        "ssl": {
                            "default": false,
                            "description": "Enables ssl for the application.",
                            "type": "boolean"
                        },
                        "sslCert": {
                            "default": "ssl/server.crt",
                            "description": "The ssl certificate used by the server.",
                            "type": "string"
                        },
                        "sslKey": {
                            "default": "ssl/server.key",
                            "description": "The ssl key used by the server.",
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "service": {
                    "description": "Options for generating a service.",
                    "properties": {
                        "flat": {
                            "default": true,
                            "description": "Flag to indicate if a dir is created.",
                            "type": "boolean"
                        },
                        "spec": {
                            "default": true,
                            "description": "Specifies if a spec file is generated.",
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                "styleExt": {
                    "description": "The file extension to be used for style files.",
                    "type": "string"
                }
            },
            "type": "object"
        },
        "e2e": {
            "additionalProperties": false,
            "description": "Configuration for end-to-end tests.",
            "properties": {
                "protractor": {
                    "additionalProperties": false,
                    "properties": {
                        "config": {
                            "description": "Path to the config file.",
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "lint": {
            "description": "Properties to be passed to TSLint.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "exclude": {
                        "default": [],
                        "description": "File glob(s) to ignore.",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "items": {
                                    "type": "string"
                                },
                                "type": "array"
                            }
                        ]
                    },
                    "files": {
                        "default": [],
                        "description": "File glob(s) to lint.",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "items": {
                                    "type": "string"
                                },
                                "type": "array"
                            }
                        ]
                    },
                    "project": {
                        "description": "Location of the tsconfig.json project file. Will also use as files to lint if 'files' property not present.",
                        "type": "string"
                    },
                    "tslintConfig": {
                        "description": "Location of the tslint.json configuration.",
                        "type": "string"
                    }
                },
                "required": [
                    "project"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "packageManager": {
            "default": "default",
            "description": "Specify which package manager tool to use.",
            "enum": [
                "npm",
                "cnpm",
                "yarn",
                "default"
            ],
            "type": "string"
        },
        "project": {
            "additionalProperties": false,
            "description": "The global configuration of the project.",
            "properties": {
                "name": {
                    "description": "The name of the project.",
                    "type": "string"
                }
            },
            "type": "object"
        },
        "test": {
            "additionalProperties": false,
            "description": "Configuration for unit tests.",
            "properties": {
                "codeCoverage": {
                    "additionalProperties": false,
                    "properties": {
                        "exclude": {
                            "default": [],
                            "description": "Globs to exclude from code coverage.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        }
                    },
                    "type": "object"
                },
                "karma": {
                    "additionalProperties": false,
                    "properties": {
                        "config": {
                            "description": "Path to the karma config file.",
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "warnings": {
            "description": "Allow people to disable console warnings.",
            "properties": {
                "hmrWarning": {
                    "default": true,
                    "description": "Show a warning when the user enabled the --hmr option.",
                    "type": "boolean"
                },
                "nodeDeprecation": {
                    "default": true,
                    "description": "Show a warning when the node version is incompatible.",
                    "type": "boolean"
                },
                "packageDeprecation": {
                    "default": true,
                    "description": "Show a warning when the user installed angular-cli.",
                    "type": "boolean"
                },
                "servePathDefault": {
                    "default": true,
                    "description": "Show a warning when deploy-url/base-href use unsupported serve path values.",
                    "type": "boolean"
                },
                "typescriptMismatch": {
                    "default": true,
                    "description": "Show a warning when the TypeScript version is incompatible",
                    "type": "boolean"
                },
                "versionMismatch": {
                    "default": true,
                    "description": "Show a warning when the global version is newer than the local one.",
                    "type": "boolean"
                }
            },
            "type": "object"
        }
    },
    "title": "Angular CLI Config Schema",
    "type": "object"
}