{
  "id": "#",
  "title": "Unbuild Executor",
  "description": "A type definition for a unbuild executor schema",
  "required": [
    "name",
    "entry"
  ],
  "properties": {
    "outputPath": {
      "title": "Output Path",
      "type": "string",
      "format": "path",
      "description": "The output path for the build",
      "id": "#outputPath"
    },
    "entry": {
      "title": "Input Directory",
      "format": "path",
      "type": "array",
      "description": "The directory to use as input for the build",
      "items": {
        "type": "string"
      },
      "id": "#entry",
      "default": [
        "{sourceRoot}"
      ]
    },
    "tsconfig": {
      "title": "TSConfig Path",
      "type": "string",
      "format": "path",
      "description": "The path to the tsconfig file",
      "id": "#tsconfig",
      "default": "{projectRoot}/tsconfig.json"
    },
    "bundle": {
      "title": "Bundle",
      "type": "boolean",
      "description": "Bundle the output",
      "id": "#bundle"
    },
    "minify": {
      "title": "Minify",
      "type": "boolean",
      "description": "Minify the output",
      "id": "#minify"
    },
    "debug": {
      "title": "Debug",
      "type": "boolean",
      "description": "Debug the output",
      "id": "#debug"
    },
    "sourcemap": {
      "title": "Sourcemap",
      "type": "boolean",
      "description": "Generate a sourcemap",
      "id": "#sourcemap"
    },
    "silent": {
      "title": "Silent",
      "type": "boolean",
      "description": "Should the build run silently - only report errors back to the user",
      "id": "#silent",
      "default": false
    },
    "target": {
      "title": "Target",
      "type": "string",
      "description": "The target to build",
      "enum": [
        "es3",
        "es5",
        "es6",
        "es2015",
        "es2016",
        "es2017",
        "es2018",
        "es2019",
        "es2020",
        "es2021",
        "es2022",
        "es2023",
        "es2024",
        "esnext",
        "node12",
        "node14",
        "node16",
        "node18",
        "node20",
        "node22",
        "browser",
        "chrome58",
        "chrome59",
        "chrome60"
      ],
      "id": "#target",
      "default": "esnext"
    },
    "format": {
      "title": "Format",
      "type": "array",
      "description": "The format to build",
      "items": {
        "type": "string",
        "enum": [
          "cjs",
          "esm",
          "iife"
        ]
      },
      "id": "#format",
      "default": [
        "cjs",
        "esm"
      ]
    },
    "platform": {
      "title": "Platform",
      "type": "string",
      "description": "The platform to build",
      "enum": [
        "neutral",
        "node",
        "browser"
      ],
      "id": "#platform",
      "default": "neutral"
    },
    "external": {
      "title": "External",
      "type": "array",
      "description": "The external dependencies",
      "id": "#external",
      "default": [],
      "items": {
        "type": "any"
      }
    },
    "define": {
      "title": "Define",
      "type": "object",
      "tsType": "Record<string, string>",
      "description": "The define values",
      "id": "#define",
      "default": {}
    },
    "env": {
      "title": "Environment Variables",
      "type": "object",
      "tsType": "Record<string, string>",
      "description": "The environment variable values",
      "id": "#env",
      "default": {}
    },
    "name": {
      "title": "Name",
      "type": "string",
      "description": "The name of the project/build",
      "id": "#name",
      "default": "{projectName}"
    },
    "treeShaking": {
      "title": "Tree Shaking",
      "type": "boolean",
      "description": "Enable tree shaking",
      "id": "#treeShaking",
      "default": true
    },
    "watch": {
      "title": "Watch",
      "type": "boolean",
      "description": "Watch for changes",
      "id": "#watch",
      "default": false
    },
    "clean": {
      "title": "Clean",
      "type": "boolean",
      "description": "Clean the output directory before building",
      "id": "#clean",
      "default": true
    },
    "stub": {
      "title": "Stub",
      "type": "boolean",
      "description": "Stub the output",
      "id": "#stub",
      "default": false
    },
    "buildOnly": {
      "title": "Build Only",
      "type": "boolean",
      "description": "Should the build process skip generating a package.json and copying assets",
      "id": "#buildOnly",
      "default": false
    },
    "watchOptions": {
      "title": "Watch Options",
      "type": "object",
      "description": "Watch options",
      "id": "#watchOptions",
      "default": {}
    },
    "stubOptions": {
      "title": "Stub Options",
      "type": "object",
      "description": "Stub options",
      "id": "#stubOptions",
      "default": {
        "jiti": {
          "cache": "node_modules/.cache/storm"
        }
      }
    },
    "dependencies": {
      "title": "Dependencies",
      "type": "array",
      "description": "The dependencies to install",
      "items": {
        "type": "string"
      },
      "id": "#dependencies"
    },
    "peerDependencies": {
      "title": "Peer Dependencies",
      "type": "array",
      "description": "The peer dependencies to install",
      "items": {
        "type": "string"
      },
      "id": "#peerDependencies"
    },
    "devDependencies": {
      "title": "Dev Dependencies",
      "type": "array",
      "description": "The dev dependencies to install",
      "items": {
        "type": "string"
      },
      "id": "#devDependencies"
    },
    "alias": {
      "title": "Alias",
      "type": "object",
      "tsType": "Record<string, string>",
      "description": "The alias to use",
      "id": "#alias",
      "default": {}
    },
    "replace": {
      "title": "Replace",
      "type": "object",
      "tsType": "Record<string, string>",
      "description": "The replace to use",
      "id": "#replace",
      "default": {}
    },
    "rollup": {
      "title": "Rollup",
      "type": "object",
      "description": "The rollup options",
      "id": "#rollup",
      "default": {}
    }
  },
  "type": "object",
  "default": {
    "entry": [
      "{sourceRoot}"
    ],
    "tsconfig": "{projectRoot}/tsconfig.json",
    "silent": false,
    "target": "esnext",
    "format": [
      "cjs",
      "esm"
    ],
    "platform": "neutral",
    "external": [],
    "define": {},
    "env": {},
    "name": "{projectName}",
    "treeShaking": true,
    "watch": false,
    "clean": true,
    "stub": false,
    "buildOnly": false,
    "watchOptions": {},
    "stubOptions": {
      "jiti": {
        "cache": "node_modules/.cache/storm"
      }
    },
    "alias": {},
    "replace": {},
    "rollup": {}
  }
}