diff --git a/Gruntfile.js b/Gruntfile.js
index bd67ce84d50b5abe50f2e0b5e5ae10e58dd053e3..6eaff731d5335b72fd2994d0d5de4117794cba0b 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -11,7 +11,7 @@ module.exports = function (grunt) {
   }
 
   var fs = require('fs')
-  var btoa = require('btoa')
+  var generateRawFilesJs = require('./docs/grunt/bs-raw-files-generator.js')
 
   // Project configuration.
   grunt.initConfig({
@@ -360,21 +360,5 @@ module.exports = function (grunt) {
   });
 
   // task for building customizer
-  grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () {
-    function getFiles(type) {
-      var files = {}
-      fs.readdirSync(type)
-        .filter(function (path) {
-          return type == 'fonts' ? true : new RegExp('\\.' + type + '$').test(path)
-        })
-        .forEach(function (path) {
-          var fullPath = type + '/' + path
-          return files[path] = (type == 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'))
-        })
-      return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'
-    }
-
-    var files = getFiles('js') + getFiles('less') + getFiles('fonts')
-    fs.writeFileSync('docs/assets/js/raw-files.js', files)
-  });
+  grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', generateRawFilesJs);
 };
diff --git a/docs/grunt/bs-raw-files-generator.js b/docs/grunt/bs-raw-files-generator.js
new file mode 100644
index 0000000000000000000000000000000000000000..b38563a06b1db6318cfbca3a6ebc37053d858c5f
--- /dev/null
+++ b/docs/grunt/bs-raw-files-generator.js
@@ -0,0 +1,22 @@
+/* jshint node: true */
+
+var btoa = require('btoa')
+var fs = require('fs')
+
+function getFiles(type) {
+  var files = {}
+  fs.readdirSync(type)
+    .filter(function (path) {
+      return type == 'fonts' ? true : new RegExp('\\.' + type + '$').test(path)
+    })
+    .forEach(function (path) {
+      var fullPath = type + '/' + path
+      return files[path] = (type == 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'))
+    })
+  return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'
+}
+
+module.exports = function generateRawFilesJs() {
+  var files = getFiles('js') + getFiles('less') + getFiles('fonts')
+  fs.writeFileSync('docs/assets/js/raw-files.js', files)
+}