diff --git a/packages/@vuepress/core/lib/node/createTemp.js b/packages/@vuepress/core/lib/node/createTemp.js index 96b831e349..8f20207cb9 100644 --- a/packages/@vuepress/core/lib/node/createTemp.js +++ b/packages/@vuepress/core/lib/node/createTemp.js @@ -1,5 +1,15 @@ const { fs, path, chalk, logger } = require('@vuepress/shared-utils') +// Only empty the `.temp` directory at most once per run to avoid +// compilation errors caused by removed files. +// See: https://github.com/vuejs/vuepress/issues/2254#issuecomment-689457157 +// +// Known issue: This can cause the `.temp` directory to grow while the server +// is running, but the impact is limited because the `.temp` directory will +// be cleared when restarting the server. +// See discussion in https://github.com/vuejs/vuepress/pull/2612 +let alreadyEmptied = false + /** * Create a dynamic temp utility context that allow to lanuch * multiple apps with isolated context at the same time. @@ -19,8 +29,9 @@ module.exports = function createTemp (tempPath) { if (!fs.existsSync(tempPath)) { fs.ensureDirSync(tempPath) - } else { + } else if (!alreadyEmptied) { fs.emptyDirSync(tempPath) + alreadyEmptied = true } logger.debug(`Temp directory: ${chalk.gray(tempPath)}`)