diff --git a/.gitignore b/.gitignore
index 4f1a4bd06fbb01dbb0aa99b968fc0b0740dd1bef..f76bd9ff69b7e8e8d333a7ade3e2fb339fb587ff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 .vagrant
 .vscode/*
 /downloads
+/Gruntfile.local.js
 /solr/vendor
 /vendor
 ChangeLog
diff --git a/Gruntfile.js b/Gruntfile.js
index 6447608ad69a6d133bb2fcd0b450eacf49e2f7cf..07ed2f91640615e709111118ff8b6b2f46c0cd50 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,7 +1,12 @@
 module.exports = function(grunt) {
-  require('jit-grunt')(grunt); // Just in time library loading
+  const fs = require("fs");
+
+  // Local custom tasks
+  if (fs.existsSync("./Gruntfile.local.js")) {
+    require("./Gruntfile.local.js")(grunt);
+  }
 
-  var fs = require('fs');
+  require('jit-grunt')(grunt); // Just in time library loading
 
   /**
    * @param  {string} file
diff --git a/Gruntfile.local.js.dist b/Gruntfile.local.js.dist
new file mode 100644
index 0000000000000000000000000000000000000000..31083b479766855e42fd6c6184d8a9aa67f636c7
--- /dev/null
+++ b/Gruntfile.local.js.dist
@@ -0,0 +1,5 @@
+module.exports = function(grunt) {
+  grunt.registerTask("custom", function customFunc() {
+    grunt.log.writeln("Hello world!");
+  });
+}