diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts
index 0f224e373bdb712c30141a231513cf8cfbe4847e..f01a731ccc68f1f111fbe0e26bd6b87308eb7329 100644
--- a/lib/manager/npm/post-update/index.ts
+++ b/lib/manager/npm/post-update/index.ts
@@ -297,7 +297,7 @@ interface ArtifactError {
 
 interface UpdatedArtifcats {
   name: string;
-  contents: string;
+  contents: string | Buffer;
 }
 
 export interface WriteExistingFilesResult {
@@ -480,7 +480,7 @@ export async function getAdditionalFiles(
                   const localModified = upath.join(config.localDir, f);
                   updatedArtifacts.push({
                     name: f,
-                    contents: await fs.readFile(localModified, 'utf-8'),
+                    contents: await fs.readFile(localModified),
                   });
                 }
               }
diff --git a/lib/platform/common.ts b/lib/platform/common.ts
index e70e17fdbe7ead8a35f121ccb1b1938ba44202f0..e85a0b7c7ed14e11406b461d5d47e775f8f98c48 100644
--- a/lib/platform/common.ts
+++ b/lib/platform/common.ts
@@ -5,7 +5,7 @@ import { CommitFilesConfig } from './git/storage';
 
 export interface FileData {
   name: string;
-  contents: string;
+  contents: string | Buffer;
 }
 
 export interface GotApiOptions {
diff --git a/lib/platform/git/storage.ts b/lib/platform/git/storage.ts
index 0ff4ee9b4603667c08872718d653dc38ae28f01e..a1e3ad1d49de069387e7adfd338e37573a79ac3a 100644
--- a/lib/platform/git/storage.ts
+++ b/lib/platform/git/storage.ts
@@ -31,7 +31,7 @@ export interface File {
   /**
    * file contents
    */
-  contents: string;
+  contents: string | Buffer;
 }
 
 interface StorageConfig {
@@ -504,10 +504,14 @@ export class Storage {
           await this._git.add(file.name);
         } else {
           fileNames.push(file.name);
-          await fs.outputFile(
-            join(this._cwd, file.name),
-            Buffer.from(file.contents)
-          );
+          let contents;
+          // istanbul ignore else
+          if (typeof file.contents === 'string') {
+            contents = Buffer.from(file.contents);
+          } else {
+            contents = file.contents;
+          }
+          await fs.outputFile(join(this._cwd, file.name), contents);
         }
       }
       // istanbul ignore if
diff --git a/lib/workers/branch/commit.ts b/lib/workers/branch/commit.ts
index eeda22b7f8c17d12a1edf43a2defbf7872f8e36b..5fe2bffb324be8fe36f746716b6fb377ac8bd30a 100644
--- a/lib/workers/branch/commit.ts
+++ b/lib/workers/branch/commit.ts
@@ -20,7 +20,7 @@ export async function commitFilesToBranch(
   // istanbul ignore if
   if (is.nonEmptyArray(config.excludeCommitPaths)) {
     updatedFiles = updatedFiles.filter(f => {
-      const filename = f.name === '|delete|' ? f.contents : f.name;
+      const filename = f.name === '|delete|' ? f.contents.toString() : f.name;
       const matchesExcludePaths = config.excludeCommitPaths.some(path =>
         minimatch(filename, path, { dot: true })
       );