| import { unlinkSync, writeFileSync } from 'fs' | |
| import { renameSync } from './rename' | |
| export function writeFileAtomic(filePath: string, content: string): void { | |
| const tempPath = filePath + '.tmp.' + Math.random().toString(36).slice(2) | |
| try { | |
| writeFileSync(tempPath, content, 'utf-8') | |
| renameSync(tempPath, filePath) | |
| } catch (e) { | |
| try { | |
| unlinkSync(tempPath) | |
| } catch { | |
| // ignore | |
| } | |
| throw e | |
| } | |
| } | |