diff --git a/package.json b/package.json
index 4aff921..19c5e27 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
     "ansi": "^0.3.1",
     "bplist-parser": "^0.1.0",
     "elementtree": "0.1.7",
+    "endent": "^1.1.1",
     "fs-extra": "^6.0.1",
     "glob": "^7.1.2",
     "minimatch": "^3.0.0",
diff --git a/spec/PlatformJson.spec.js b/spec/PlatformJson.spec.js
index 97d04ff..d2c3c7e 100644
--- a/spec/PlatformJson.spec.js
+++ b/spec/PlatformJson.spec.js
@@ -108,13 +108,27 @@
             });
         });
 
+        function evaluateCordovaDefineStatement (str) {
+            expect(typeof str).toBe('string');
+            const fnString = str.replace(/^\s*cordova\.define\('cordova\/plugin_list',\s*([\s\S]+)\);\s*$/, '($1)');
+            const mod = {exports: {}};
+            global.eval(fnString)(null, mod.exports, mod); // eslint-disable-line no-eval
+            return mod;
+        }
+
+        function expectedMetadata () {
+            // Create plain objects from ModuleMetadata instances
+            const modules = platformJson.root.modules.map(o => Object.assign({}, o));
+            modules.metadata = platformJson.root.plugin_metadata;
+            return modules;
+        }
+
         describe('generateMetadata method', function () {
             it('Test 009 : should generate text metadata containing list of installed modules', function () {
-                var meta = platformJson.addPluginMetadata(fakePlugin).generateMetadata();
-                expect(typeof meta).toBe('string');
-                expect(meta.indexOf(JSON.stringify(platformJson.root.modules, null, 2))).toBeGreaterThan(0);
-                // expect(meta).toMatch(JSON.stringify(platformJson.root.modules, null, 2));
-                expect(meta).toMatch(JSON.stringify(platformJson.root.plugin_metadata, null, 2));
+                const meta = platformJson.addPluginMetadata(fakePlugin).generateMetadata();
+                const mod = evaluateCordovaDefineStatement(meta);
+
+                expect(mod.exports).toEqual(expectedMetadata());
             });
         });
 
@@ -129,8 +143,8 @@
                 expect(spy).toHaveBeenCalledTimes(1);
                 const [file, data] = spy.calls.argsFor(0);
                 expect(file).toBe(dest);
-                expect(data.indexOf(JSON.stringify(platformJson.root.modules, null, 2))).toBeGreaterThan(0);
-                expect(data).toMatch(JSON.stringify(platformJson.root.plugin_metadata, null, 2));
+                const mod = evaluateCordovaDefineStatement(data);
+                expect(mod.exports).toEqual(expectedMetadata());
             });
         });
     });
diff --git a/src/PlatformJson.js b/src/PlatformJson.js
index 4645f9b..206093e 100644
--- a/src/PlatformJson.js
+++ b/src/PlatformJson.js
@@ -16,6 +16,7 @@
 
 var fs = require('fs-extra');
 var path = require('path');
+var endent = require('endent');
 var mungeutil = require('./ConfigChanges/munge-util');
 
 function PlatformJson (filePath, platform, root) {
@@ -182,15 +183,13 @@
  * @returns {String} cordova_plugins.js contents
  */
 PlatformJson.prototype.generateMetadata = function () {
-    return [
-        'cordova.define(\'cordova/plugin_list\', function(require, exports, module) {',
-        'module.exports = ' + JSON.stringify(this.root.modules, null, 2) + ';',
-        'module.exports.metadata = ',
-        '// TOP OF METADATA',
-        JSON.stringify(this.root.plugin_metadata, null, 2) + ';',
-        '// BOTTOM OF METADATA',
-        '});' // Close cordova.define.
-    ].join('\n');
+    const stringify = o => JSON.stringify(o, null, 2);
+    return endent`
+        cordova.define('cordova/plugin_list', function(require, exports, module) {
+          module.exports = ${stringify(this.root.modules)};
+          module.exports.metadata = ${stringify(this.root.plugin_metadata)};
+        });
+    `;
 };
 
 /**
