{
  "$schema": "http://json-schema.org/schema",
  "id": "SchematicsNxLibrary",
  "title": "Create a library",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Library name",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "What name would you like to use for the library?"
    },
    "directory": {
      "type": "string",
      "description": "A directory where the app is placed",
      "x-prompt": "In which directory should the library be generated?"
    },
    "framework": {
      "type": "string",
      "enum": ["angular", "none"],
      "description": "The framework this library uses",
      "default": "none",
      "x-prompt": {
        "message": "What framework should this library use?",
        "type": "list",
        "items": [
          {
            "value": "none",
            "label": "Typescript [ https://www.typescriptlang.org/ ]"
          },
          {
            "value": "angular",
            "label": "Angular    [ https://angular.io/             ]"
          }
        ]
      }
    },
    "publishable": {
      "type": "boolean",
      "default": false,
      "description": "Generate a simple TS library when set to true."
    },
    "prefix": {
      "type": "string",
      "format": "html-selector",
      "description": "The prefix to apply to generated selectors.",
      "alias": "p"
    },
    "skipFormat": {
      "description": "Skip formatting files",
      "type": "boolean",
      "default": false
    },
    "simpleModuleName": {
      "description": "Keep the module name simple (when using --directory)",
      "type": "boolean",
      "default": false
    },
    "skipPackageJson": {
      "type": "boolean",
      "default": false,
      "description": "Do not add dependencies to package.json."
    },
    "skipTsConfig": {
      "type": "boolean",
      "default": false,
      "description": "Do not update tsconfig.json for development experience."
    },
    "parentModule": {
      "type": "string",
      "description": "Update the router configuration of the parent module using loadChildren or children, depending on what `lazy` is set to."
    },
    "style": {
      "description": "The file extension to be used for style files.",
      "type": "string",
      "default": "css",
      "x-prompt": {
        "message": "Which stylesheet format would you like to use?",
        "type": "list",
        "items": [
          { "value": "css", "label": "CSS" },
          { "value": "scss", "label": "SCSS   [ http://sass-lang.com   ]" },
          { "value": "sass", "label": "SASS   [ http://sass-lang.com   ]" },
          { "value": "less", "label": "LESS   [ http://lesscss.org     ]" },
          { "value": "styl", "label": "Stylus [ http://stylus-lang.com ]" }
        ]
      }
    },
    "routing": {
      "type": "boolean",
      "default": false,
      "description": "Add router configuration. See lazy for more information."
    },
    "lazy": {
      "type": "boolean",
      "default": false,
      "description": "Add RouterModule.forChild when set to true, and a simple array of routes when set to false."
    },
    "module": {
      "type": "boolean",
      "default": true,
      "description": "[Deprecated]: Include an NgModule in the library."
    },
    "tags": {
      "type": "string",
      "description": "Add tags to the library (used for linting)",
      "x-prompt": "Which tags would you like to add to the library? (used for linting)"
    },
    "unitTestRunner": {
      "type": "string",
      "enum": ["karma", "jest", "none"],
      "description": "Test runner to use for unit tests",
      "default": "jest",
      "x-prompt": {
        "message": "Which Unit Test Runner would you like to use for the library?",
        "type": "list",
        "items": [
          { "value": "jest", "label": "Jest [https://jestjs.io/]" },
          { "value": "karma", "label": "Karma" }
        ]
      }
    }
  },
  "required": []
}
