{
  "version": 2,
  "outputCapture": "direct-nodejs",
  "title": "Web Library Rollup Target (Experimental)",
  "description": "Packages a library for different web usages (ESM, CommonJS).",
  "cli": "nx",
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "The path to package.json file.",
      "x-priority": "important"
    },
    "main": {
      "type": "string",
      "description": "The path to the entry file, relative to project.",
      "alias": "entryFile",
      "x-completion-type": "file",
      "x-completion-glob": "**/*@(.js|.ts)",
      "x-priority": "important"
    },
    "outputPath": {
      "type": "string",
      "description": "The output path of the generated files.",
      "x-completion-type": "directory",
      "x-priority": "important"
    },
    "outputFileName": {
      "type": "string",
      "description": "Name of the main output file. Defaults same basename as 'main' file."
    },
    "deleteOutputPath": {
      "type": "boolean",
      "description": "Delete the output path before building.",
      "default": true
    },
    "tsConfig": {
      "type": "string",
      "description": "The path to tsconfig file.",
      "x-completion-type": "file",
      "x-completion-glob": "tsconfig.*.json",
      "x-priority": "important"
    },
    "allowJs": {
      "type": "boolean",
      "description": "Allow JavaScript files to be compiled.",
      "default": false
    },
    "format": {
      "type": "array",
      "description": "List of module formats to output. Defaults to matching format from tsconfig (e.g. CJS for CommonJS, and ESM otherwise).",
      "alias": "f",
      "items": {
        "type": "string",
        "enum": ["esm", "cjs"]
      }
    },
    "external": {
      "type": "array",
      "description": "A list of external modules that will not be bundled (`react`, `react-dom`, etc.). Can also be set to `all` (bundle nothing) or `none` (bundle everything).",
      "oneOf": [
        {
          "type": "string",
          "enum": ["all", "none"]
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "watch": {
      "type": "boolean",
      "description": "Enable re-building when files change.",
      "default": false
    },
    "updateBuildableProjectDepsInPackageJson": {
      "type": "boolean",
      "description": "Update buildable project dependencies in `package.json`.",
      "default": false,
      "x-deprecated": "Configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/packages/eslint-plugin/documents/dependency-checks). It will be removed in v17."
    },
    "buildableProjectDepsInPackageJsonType": {
      "type": "string",
      "description": "When `updateBuildableProjectDepsInPackageJson` is `true`, this adds dependencies to either `peerDependencies` or `dependencies`.",
      "enum": ["dependencies", "peerDependencies"],
      "default": "peerDependencies",
      "x-deprecated": "Configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/packages/eslint-plugin/documents/dependency-checks). It will be removed in v17."
    },
    "rollupConfig": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "x-completion-type": "file",
            "x-completion-glob": "rollup?(*)@(.js|.ts)"
          }
        },
        {
          "type": "string",
          "x-completion-type": "file",
          "x-completion-glob": "rollup?(*)@(.js|.ts)"
        }
      ],
      "description": "Path to a function which takes a rollup config and returns an updated rollup config."
    },
    "extractCss": {
      "type": ["boolean", "string"],
      "description": "CSS files will be extracted to the output folder. Alternatively custom filename can be provided (e.g. styles.css)",
      "default": true
    },
    "assets": {
      "type": "array",
      "description": "List of static assets.",
      "default": [],
      "items": {
        "$ref": "#/definitions/assetPattern"
      }
    },
    "compiler": {
      "type": "string",
      "enum": ["babel", "swc", "tsc"],
      "default": "babel",
      "description": "Which compiler to use."
    },
    "babelUpwardRootMode": {
      "type": "boolean",
      "description": "Whether to set rootmode to upward. See https://babeljs.io/docs/en/options#rootmode",
      "default": false
    },
    "javascriptEnabled": {
      "type": "boolean",
      "description": "Sets `javascriptEnabled` option for less loader",
      "default": false
    },
    "generateExportsField": {
      "type": "boolean",
      "description": "Generate package.json with 'exports' field. This field defines entry points in the package and is used by Node and the TypeScript compiler.",
      "default": false
    },
    "skipTypeCheck": {
      "type": "boolean",
      "description": "Whether to skip TypeScript type checking.",
      "default": false
    },
    "skipTypeField": {
      "type": "boolean",
      "description": "Prevents 'type' field from being added to compiled package.json file. Use this if you are having an issue with this field.",
      "default": false
    }
  },
  "required": ["tsConfig", "main", "outputPath"],
  "definitions": {
    "assetPattern": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "glob": {
              "type": "string",
              "description": "The pattern to match."
            },
            "input": {
              "type": "string",
              "description": "The input directory path in which to apply `glob`. Defaults to the project root."
            },
            "output": {
              "type": "string",
              "description": "Relative path within the output folder."
            }
          },
          "additionalProperties": false,
          "required": ["glob", "input", "output"]
        },
        {
          "type": "string"
        }
      ]
    }
  },
  "examplesFile": "../../docs/rollup-examples.md"
}
