|
| 1 | +diff --git a/scripts/frontend/preinstall.mjs b/scripts/frontend/preinstall.mjs |
| 2 | +index 09d980344eac..b1514e803b75 100644 |
| 3 | +--- a/scripts/frontend/preinstall.mjs |
| 4 | ++++ b/scripts/frontend/preinstall.mjs |
| 5 | +@@ -1,6 +1,6 @@ |
| 6 | + import { dirname, join } from 'node:path'; |
| 7 | + import { fileURLToPath } from 'node:url'; |
| 8 | +-import { readFile, rm } from 'node:fs/promises'; |
| 9 | ++import { readdir, readFile, rm, stat } from 'node:fs/promises'; |
| 10 | + |
| 11 | + const ROOT_PATH = join(dirname(fileURLToPath(import.meta.url)), '..', '..'); |
| 12 | + const NODE_MODULES = join(ROOT_PATH, 'node_modules'); |
| 13 | +@@ -55,5 +55,14 @@ if (!arraysHaveSameItems(prevTopLevelPatterns, currentTopLevelPatterns)) { |
| 14 | + console.error( |
| 15 | + '[WARNING] package.json changed significantly. Removing node_modules to be sure there are no problems.', |
| 16 | + ); |
| 17 | +- await rm(NODE_MODULES, { recursive: true, force: true }); |
| 18 | ++ // sameersbn/gitlab : avoid removing NODE_MODULES directly, iterate its content instead |
| 19 | ++ // The path NODE_MODULES is declared as docker volume - always busy so that cannot be removed |
| 20 | ++ // before iterating, check if the directory exists |
| 21 | ++ const isDirectory = await stat(NODE_MODULES).then((stat) => stat.isDirectory()).catch(() => false); |
| 22 | ++ if(isDirectory) { |
| 23 | ++ for (const dir_ent of await readdir(NODE_MODULES, { withFileTypes: true})) { |
| 24 | ++ const to_remove = join(NODE_MODULES, dir_ent.name); |
| 25 | ++ await rm(to_remove, { recursive: true, force: true }); |
| 26 | ++ } |
| 27 | ++ } |
| 28 | + } |
0 commit comments