fix(cli): cleanup writeTemp on dev server restart (#1693) · vuepress/core@ab6eada · GitHub
Skip to content

Commit ab6eada

Browse files
authored
fix(cli): cleanup writeTemp on dev server restart (#1693)
1 parent 44e6576 commit ab6eada

4 files changed

Lines changed: 39 additions & 2 deletions

File tree

packages/cli/src/commands/dev/dev.ts

Lines changed: 4 additions & 0 deletions

packages/core/src/app/resolveAppWriteTemp.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface WriteTempCache {
1515
export const resolveAppWriteTemp = (dir: AppDir): AppWriteTemp => {
1616
const cache = new Map<string, WriteTempCache>()
1717

18-
const writeTemp: AppWriteTemp = async (file: string, content: string) => {
18+
const writeTemp = (async (file: string, content: string) => {
1919
const filePath = dir.temp(file)
2020
const contentHash = hash(content)
2121

@@ -48,6 +48,10 @@ export const resolveAppWriteTemp = (dir: AppDir): AppWriteTemp => {
4848
}
4949
await item.current
5050
return filePath
51+
}) as AppWriteTemp
52+
53+
writeTemp.cleanup = (): void => {
54+
cache.clear()
5155
}
5256

5357
return writeTemp

packages/core/src/types/app/utils.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,16 @@ export interface AppEnv {
6161
/**
6262
* Write temp file util
6363
*/
64-
export type AppWriteTemp = (file: string, content: string) => Promise<string>
64+
export interface AppWriteTemp {
65+
(file: string, content: string): Promise<string>
66+
67+
/**
68+
* Clean up the internal write temp cache.
69+
*
70+
* This should be called when the dev server restarts
71+
* to avoid stale cache and to release references to any
72+
* in-memory write state so that pending write promises can
73+
* complete and be garbage-collected naturally.
74+
*/
75+
cleanup: () => void
76+
}

packages/core/tests/app/resolveAppWriteTemp.spec.ts

Lines changed: 17 additions & 0 deletions

0 commit comments

Comments
 (0)