{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "allOf": [
    {
      "$ref": "#/definitions/Options"
    },
    {
      "properties": {
        "env": {
          "description": "This is an object of keys that represent different environments. For example, you may have: `{ env: { production: { /* specific options */ } } }` which will use those options when the environment variable BABEL_ENV is set to \"production\". If BABEL_ENV isn't set then NODE_ENV will be used, if it's not set then it defaults to \"development\"",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Options"
          },
          "default": {}
        }
      }
    }
  ],
  "definitions": {
    "Options": {
      "type": "object",
      "properties": {
        "ast": {
          "description": "Include the AST in the returned object",
          "type": "boolean",
          "default": true
        },
        "auxiliaryCommentAfter": {
          "description": "Attach a comment after all non-user injected code.",
          "type": "string"
        },
        "auxiliaryCommentBefore": {
          "description": "Attach a comment before all non-user injected code.",
          "type": "string"
        },
        "code": {
          "description": "Enable code generation",
          "type": "boolean",
          "default": true
        },
        "comments": {
          "description": "Output comments in generated output.",
          "type": "boolean",
          "default": true
        },
        "compact": {
          "description": "Do not include superfluous whitespace characters and line terminators. When set to \"auto\" compact is set to true on input sizes of >500KB.",
          "type": ["string", "boolean"],
          "enum": ["auto", true, false],
          "default": "auto"
        },
        "extends": {
          "description": "A path to a .babelrc file to extend",
          "type": "string"
        },
        "filename": {
          "description": "Filename for use in errors etc.",
          "type": "string",
          "default": "unknown"
        },
        "filenameRelative": {
          "description": "Filename relative to sourceRoot (defaults to \"filename\")",
          "type": "string"
        },
        "highlightCode": {
          "description": "ANSI highlight syntax error code frames",
          "type": "boolean"
        },
        "ignore": {
          "description": "Opposite of the \"only\" option",
          "type": ["string", "array"],
          "items": {
            "type": "string"
          }
        },
        "inputSourceMap": {
          "description": "If true, attempt to load an input sourcemap from the file itself. If an object is provided, it will be treated as the source map object itself.",
          "type": ["boolean", "object"],
          "default": true
        },
        "keepModuleIdExtensions": {
          "description": "Keep extensions in module ids",
          "type": "boolean",
          "default": false
        },
        "moduleId": {
          "description": "Specify a custom name for module ids.",
          "type": "string"
        },
        "moduleIds": {
          "description": "If truthy, insert an explicit id for modules. By default, all modules are anonymous. (Not available for common modules)",
          "type": "string",
          "default": false
        },
        "moduleRoot": {
          "description": "Optional prefix for the AMD module formatter that will be prepend to the filename on module definitions. (defaults to \"sourceRoot\")",
          "type": "string"
        },
        "only": {
          "description": "A glob, regex, or mixed array of both, matching paths to only compile. Can also be an array of arrays containing paths to explicitly match. When attempting to compile a non-matching file it's returned verbatim.",
          "type": ["string", "array"],
          "items": {
            "type": "string"
          }
        },
        "plugins": {
          "description": "List of plugins to load and use",
          "type": "array",
          "items": {
            "type": ["string", "array"],
            "items": [
              {
                "description": "The name of the plugin.",
                "type": "string"
              },
              {
                "description": "The options of the plugin.",
                "type": "object"
              }
            ]
          }
        },
        "presets": {
          "description": "List of presets (a set of plugins) to load and use",
          "type": "array",
          "items": {
            "type": ["string", "array"],
            "items": [
              {
                "description": "The name of the preset.",
                "type": "string"
              },
              {
                "description": "The options of the preset.",
                "type": "object"
              }
            ]
          }
        },
        "retainLines": {
          "default": false,
          "description": "Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps. NOTE: This will obviously not retain the columns.",
          "type": "boolean"
        },
        "sourceFileName": {
          "description": "Set sources[0] on returned source map. (defaults to \"filenameRelative\")",
          "type": "string"
        },
        "sourceMaps": {
          "default": false,
          "description": "If truthy, adds a map property to returned output. If set to \"inline\", a comment with a sourceMappingURL directive is added to the bottom of the returned code. If set to \"both\" then a map property is returned as well as a source map comment appended.",
          "type": ["string", "boolean"],
          "enum": ["both", "inline", true, false]
        },
        "sourceMapTarget": {
          "description": "Set file on returned source map. (defaults to \"filenameRelative\")",
          "type": "string"
        },
        "sourceRoot": {
          "description": "The root from which all sources are relative. (defaults to \"moduleRoot\")",
          "type": "string"
        }
      }
    }
  },
  "id": "https://json.schemastore.org/babelrc.json",
  "title": "JSON schema for Babel 6+ configuration files",
  "type": "object"
}
