diff --git a/lib/manager/mix/artifacts.ts b/lib/manager/mix/artifacts.ts
index c037f01da1896f18f5fac16c3331baf22b96a799..270b07dad3143d9641339cc9aaac0a67e7250fbc 100644
--- a/lib/manager/mix/artifacts.ts
+++ b/lib/manager/mix/artifacts.ts
@@ -1,10 +1,8 @@
-import fs from 'fs-extra';
 import { quote } from 'shlex';
-import upath from 'upath';
 import { logger } from '../../logger';
 import { exec } from '../../util/exec';
 import { BinarySource } from '../../util/exec/common';
-import { readLocalFile } from '../../util/fs';
+import { readLocalFile, writeLocalFile } from '../../util/fs';
 import { UpdateArtifact, UpdateArtifactsResult } from '../common';
 
 export async function updateArtifacts({
@@ -27,8 +25,7 @@ export async function updateArtifacts({
 
   const lockFileName = 'mix.lock';
   try {
-    const localPackageFileName = upath.join(cwd, packageFileName);
-    await fs.outputFile(localPackageFileName, newPackageFileContent);
+    await writeLocalFile(packageFileName, newPackageFileContent);
   } catch (err) {
     logger.warn({ err }, 'mix.exs could not be written');
     return [
@@ -80,8 +77,7 @@ export async function updateArtifacts({
     ];
   }
 
-  const localLockFileName = upath.join(cwd, lockFileName);
-  const newMixLockContent = await fs.readFile(localLockFileName, 'utf8');
+  const newMixLockContent = await readLocalFile(lockFileName, 'utf8');
   if (existingLockFileContent === newMixLockContent) {
     logger.debug('mix.lock is unchanged');
     return null;
diff --git a/lib/manager/pipenv/artifacts.ts b/lib/manager/pipenv/artifacts.ts
index 9e33a4dd91b4d709a390cc3c826361ffd7dfe271..8b775874344caddab04ae98252c6d964fc05888b 100644
--- a/lib/manager/pipenv/artifacts.ts
+++ b/lib/manager/pipenv/artifacts.ts
@@ -1,9 +1,9 @@
-import { ensureDir, outputFile, readFile, remove } from 'fs-extra';
+import { ensureDir } from 'fs-extra';
 import { join } from 'upath';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { ExecOptions, exec } from '../../util/exec';
-import { readLocalFile } from '../../util/fs';
+import { deleteLocalFile, readLocalFile, writeLocalFile } from '../../util/fs';
 import {
   UpdateArtifact,
   UpdateArtifactsConfig,
@@ -54,11 +54,9 @@ export async function updateArtifacts({
     return null;
   }
   try {
-    const localPipfileFileName = join(config.localDir, pipfileName);
-    await outputFile(localPipfileFileName, newPipfileContent);
-    const localLockFileName = join(config.localDir, lockFileName);
+    await writeLocalFile(pipfileName, newPipfileContent);
     if (config.isLockFileMaintenance) {
-      await remove(localLockFileName);
+      await deleteLocalFile(lockFileName);
     }
     const cmd = 'pipenv lock';
     const tagConstraint = getPythonConstraint(existingLockFileContent, config);
@@ -85,7 +83,7 @@ export async function updateArtifacts({
       {
         file: {
           name: lockFileName,
-          contents: await readFile(localLockFileName, 'utf8'),
+          contents: await readLocalFile(lockFileName, 'utf8'),
         },
       },
     ];
diff --git a/lib/manager/poetry/artifacts.ts b/lib/manager/poetry/artifacts.ts
index 9c6c87c508a9e0cce7290e1b5dab3dfc4eaaabc2..2cca42754af2e9ca256fd78d3bd0b15e7986b528 100644
--- a/lib/manager/poetry/artifacts.ts
+++ b/lib/manager/poetry/artifacts.ts
@@ -1,10 +1,10 @@
 import is from '@sindresorhus/is';
-import fs from 'fs-extra';
 import { quote } from 'shlex';
 import { parse } from 'toml';
 import { logger } from '../../logger';
 import { ExecOptions, exec } from '../../util/exec';
 import {
+  deleteLocalFile,
   getSiblingFileName,
   readLocalFile,
   writeLocalFile,
@@ -65,7 +65,7 @@ export async function updateArtifacts({
     await writeLocalFile(packageFileName, newPackageFileContent);
     const cmd: string[] = [];
     if (config.isLockFileMaintenance) {
-      await fs.remove(lockFileName);
+      await deleteLocalFile(lockFileName);
       cmd.push('poetry update --lock --no-interaction');
     } else {
       for (let i = 0; i < updatedDeps.length; i += 1) {
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index a7ca533fc5b4cc05e593234fcd7ec7b3ceccb3fb..64269ebc6a6c4204323fb6723a2b8ddccac71c5b 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -2,6 +2,7 @@ import fs from 'fs-extra';
 import { RenovateConfig } from '../../config';
 import { logger, setMeta } from '../../logger';
 import { platform } from '../../platform';
+import { deleteLocalFile } from '../../util/fs';
 import { addSplit, getSplits, splitInit } from '../../util/split';
 import handleError from './error';
 import { finaliseRepo } from './finalise';
@@ -52,7 +53,7 @@ export async function renovateRepository(
   }
   await platform.cleanRepo();
   if (config.localDir && !config.persistRepoData) {
-    await fs.remove(config.localDir);
+    await deleteLocalFile('.');
   }
   const splits = getSplits();
   logger.debug(splits, 'Repository timing splits (milliseconds)');