{"record":{"id":"64d605b8eade1b1b","repo":"vuejs/vue-cli","slug":"configuration-error-do-not-set-output-directory","errorCode":null,"errorMessage":"\n\nConfiguration Error: Do not set output directory to project root.\n","messagePattern":"\n\nConfiguration Error: Do not set output directory to project root\\.\n","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@vue/cli-service/lib/util/validateWebpackConfig.js","lineNumber":25,"sourceCode":"  const singleConfig = Array.isArray(webpackConfig)\n    ? webpackConfig[0]\n    : webpackConfig\n\n  const actualTargetDir = singleConfig.output.path\n\n  if (actualTargetDir !== api.resolve(options.outputDir)) {\n    // user directly modifies output.path in configureWebpack or chainWebpack.\n    // this is not supported because there's no way for us to give copy\n    // plugin the correct value this way.\n    throw new Error(\n      `\\n\\nConfiguration Error: ` +\n      `Avoid modifying webpack output.path directly. ` +\n      `Use the \"outputDir\" option instead.\\n`\n    )\n  }\n\n  if (actualTargetDir === api.service.context) {\n    throw new Error(\n      `\\n\\nConfiguration Error: ` +\n      `Do not set output directory to project root.\\n`\n    )\n  }\n\n  if (target === 'app' && singleConfig.output.publicPath !== options.publicPath) {\n    throw new Error(\n      `\\n\\nConfiguration Error: ` +\n      `Avoid modifying webpack output.publicPath directly. ` +\n      `Use the \"publicPath\" option instead.\\n`\n    )\n  }\n}\n","sourceCodeStart":7,"sourceCodeEnd":39,"githubUrl":"https://github.com/vuejs/vue-cli/blob/7eb93c169c7520935252e2473387f923ef80d856/packages/@vue/cli-service/lib/util/validateWebpackConfig.js#L7-L39","documentation":"validateWebpackConfig guards against the resolved output.path being equal to the project root (api.service.context). Writing build artifacts into the project root would overwrite source files, so this is rejected outright.","triggerScenarios":"Setting `outputDir` to the project root — e.g. `outputDir: ''`, `outputDir: '.'`, or `outputDir: './'` — so that `api.resolve(outputDir)` resolves to the cwd.","commonSituations":"Empty/relative outputDir misconfiguration; attempting to output at repo root.","solutions":["Set outputDir to a real subfolder, e.g. `'dist'`.","Avoid empty-string or `.`/`./` values for outputDir."],"exampleFix":"// vue.config.js — before\nmodule.exports = { outputDir: '' }\n// after\nmodule.exports = { outputDir: 'dist' }","handlingStrategy":"validation","validationCode":"const path = require('path')\nconst resolved = path.resolve(process.cwd(), options.outputDir || 'dist')\nif (resolved === path.resolve(process.cwd())) {\n  throw new Error('outputDir resolves to project root; choose a subfolder like \"dist\"')\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never set outputDir to '', '.', or './'.","Keep outputDir as a named subfolder (default 'dist')."],"tags":["webpack","configuration","output-dir","safety"],"backgroundTag":null,"analyzedSha":"7eb93c169c7520935252e2473387f923ef80d856","analyzedAt":"2026-08-13T10:13:37.803Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}