mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 13:55:41 +01:00
build/fs: modernize file-system helpers
Replaced custom recursive directory creation and deprecated `fs.rmdirSync` logic with the native APIs introduced in Node ≥10:
* [ensureDir](cci:1://file:///c:/Users/T2430514/Downloads/monaco-editor/build/fs.ts:12:0-21:1) now calls `fs.mkdirSync(dirname, { recursive: true })`
– creates full path atomically
– avoids race conditions and extra loops
* [removeDir](cci:1://file:///c:/Users/T2430514/Downloads/monaco-editor/build/fs.ts:44:0-79:1) now ends with `fs.rmSync(dirPath, { recursive: true, force: true })`
– officially supported replacement for `fs.rmdirSync`
– handles non-empty directories and future Node versions
This simplifies the code, removes deprecation warnings on Node 16+, and prevents build/packaging scripts from failing on newer runtimes.
Co-Authored-By: S. M. Mohiuddin Khan Shiam <147746955+mohiuddin-khan-shiam@users.noreply.github.com>
This commit is contained in:
parent
f420968fc9
commit
07c1ae5204
1 changed files with 11 additions and 16 deletions
27
build/fs.ts
27
build/fs.ts
|
|
@ -11,22 +11,14 @@ const REPO_ROOT = path.join(__dirname, '../');
|
|||
const existingDirCache = new Set();
|
||||
|
||||
export function ensureDir(dirname: string) {
|
||||
/** @type {string[]} */
|
||||
const dirs = [];
|
||||
|
||||
while (dirname.length > REPO_ROOT.length) {
|
||||
dirs.push(dirname);
|
||||
dirname = path.dirname(dirname);
|
||||
// Node.js ≥10 supports the recursive option for mkdirSync, which creates all
|
||||
// parent folders that do not yet exist. This is more robust than the manual
|
||||
// loop above and avoids race-conditions when multiple processes attempt to
|
||||
// create the same directory tree concurrently.
|
||||
if (!existingDirCache.has(dirname)) {
|
||||
fs.mkdirSync(dirname, { recursive: true });
|
||||
existingDirCache.add(dirname);
|
||||
}
|
||||
dirs.reverse();
|
||||
dirs.forEach((dir) => {
|
||||
if (!existingDirCache.has(dir)) {
|
||||
try {
|
||||
fs.mkdirSync(dir);
|
||||
} catch (err) {}
|
||||
existingDirCache.add(dir);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -73,7 +65,10 @@ export function removeDir(_dirPath: string, keep?: (filename: string) => boolean
|
|||
}
|
||||
}
|
||||
if (!keepsFiles) {
|
||||
fs.rmdirSync(dirPath);
|
||||
// fs.rmdirSync is deprecated for non-empty directories and removed in
|
||||
// future Node.js versions. fs.rmSync with { recursive: true, force: true }
|
||||
// is the recommended API.
|
||||
fs.rmSync(dirPath, { recursive: true, force: true });
|
||||
}
|
||||
return keepsFiles;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue