CB-12766 Consistently write JSON with 2 spaces indentation
authorRemco Haszing <remcohaszing@gmail.com>
Tue, 16 May 2017 07:58:54 +0000 (09:58 +0200)
committerSteve Gill <stevengill97@gmail.com>
Fri, 2 Jun 2017 18:23:53 +0000 (11:23 -0700)
JSON was written with 4 spaces indentation and even a tab at some
point. Most NodeJS tools write their JSON configuration with an
indentation of 2 spaces. Most notably npm does this, which writes to
package.json, as does Cordova. This caused unnecessary changes in
package.json.

 This closes #558

spec/PlatformJson.spec.js
src/PlatformJson.js

index 58a4533..f3ce22b 100644 (file)
@@ -112,9 +112,9 @@ describe('PlatformJson class', function() {
             it('Test 009 : should generate text metadata containing list of installed modules', function () {\r
                 var meta = platformJson.addPluginMetadata(fakePlugin).generateMetadata();\r
                 expect(typeof meta).toBe('string');\r
-                expect(meta.indexOf(JSON.stringify(platformJson.root.modules, null, 4))).toBeGreaterThan(0);\r
-                // expect(meta).toMatch(JSON.stringify(platformJson.root.modules, null, 4));\r
-                expect(meta).toMatch(JSON.stringify(platformJson.root.plugin_metadata, null, 4));\r
+                expect(meta.indexOf(JSON.stringify(platformJson.root.modules, null, 2))).toBeGreaterThan(0);\r
+                // expect(meta).toMatch(JSON.stringify(platformJson.root.modules, null, 2));\r
+                expect(meta).toMatch(JSON.stringify(platformJson.root.plugin_metadata, null, 2));\r
             });\r
         });\r
     });\r
index ab94b5f..137bd21 100644 (file)
@@ -39,7 +39,7 @@ PlatformJson.load = function(plugins_dir, platform) {
 
 PlatformJson.prototype.save = function() {
     shelljs.mkdir('-p', path.dirname(this.filePath));
-    fs.writeFileSync(this.filePath, JSON.stringify(this.root, null, 4), 'utf-8');
+    fs.writeFileSync(this.filePath, JSON.stringify(this.root, null, 2), 'utf-8');
 };
 
 /**
@@ -195,10 +195,10 @@ PlatformJson.prototype.makeTopLevel = function(pluginId) {
 PlatformJson.prototype.generateMetadata = function () {
     return [
         'cordova.define(\'cordova/plugin_list\', function(require, exports, module) {',
-        'module.exports = ' + JSON.stringify(this.root.modules, null, 4) + ';',
+        'module.exports = ' + JSON.stringify(this.root.modules, null, 2) + ';',
         'module.exports.metadata = ',
         '// TOP OF METADATA',
-        JSON.stringify(this.root.plugin_metadata, null, 4) + ';',
+        JSON.stringify(this.root.plugin_metadata, null, 2) + ';',
         '// BOTTOM OF METADATA',
         '});' // Close cordova.define.
     ].join('\n');