{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/bower.json",
  "patternProperties": {
    "^_": {
      "description": "Any property starting with _ is valid.",
      "anyOf": [
        {
          "type": "array"
        },
        {
          "type": "boolean"
        },
        {
          "type": "integer"
        },
        {
          "type": "null"
        },
        {
          "type": "number"
        },
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "string"
        }
      ]
    }
  },
  "properties": {
    "name": {
      "description": "The name of your package.",
      "type": "string",
      "maxLength": 50,
      "minLength": 1
    },
    "description": {
      "description": "Help users identify and search for your package with a brief description.",
      "type": "string",
      "maxLength": 140
    },
    "version": {
      "description": "A semantic version number.",
      "type": "string"
    },
    "main": {
      "description": "The primary acting files necessary to use your package.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array"
        }
      ]
    },
    "license": {
      "description": "SPDX license identifier or path/url to a license.",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 140
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 140
          }
        }
      ]
    },
    "ignore": {
      "description": "A list of files for Bower to ignore when installing your package.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array"
        }
      ]
    },
    "keywords": {
      "description": "Used for search by keyword. Helps make your package easier to discover without people needing to know its name.",
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 50
      }
    },
    "authors": {
      "description": "A list of people that authored the contents of the package.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "object"
          }
        ]
      }
    },
    "homepage": {
      "description": "URL to learn more about the package. Falls back to GitHub project if not specified and it's a GitHub endpoint.",
      "type": "string",
      "format": "uri"
    },
    "repository": {
      "description": "The repository in which the source code can be found.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "git"
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "dependencies": {
      "description": "Dependencies are specified with a simple hash of package name to a semver compatible identifier or URL.",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "devDependencies": {
      "description": "Dependencies that are only needed for development of the package, e.g., test framework or building documentation.",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "resolutions": {
      "description": "Dependency versions to automatically resolve with if conflicts occur between packages.",
      "type": "object"
    },
    "private": {
      "description": "If you set it to  true  it will refuse to publish it. This is a way to prevent accidental publication of private repositories.",
      "type": "boolean"
    },
    "exportsOverride": {
      "description": "Used by grunt-bower-task to specify custom install locations.",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array"
            }
          ]
        }
      }
    },
    "moduleType": {
      "description": "The types of modules this package exposes",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "enum": ["amd", "es6", "globals", "node", "yui"]
          }
        }
      ]
    }
  },
  "required": ["name"],
  "title": "JSON schema for Bower configuration files",
  "type": "object"
}
