diff --git a/packages/webpack-uni-pages-loader/lib/platforms/mp.js b/packages/webpack-uni-pages-loader/lib/platforms/mp.js index b47e4cae0e8029a22cc1479969a2ac5b6ff701d5..6a2250d11ef74b82ca759e086dc2c440f5302399 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/mp.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/mp.js @@ -1,5 +1,6 @@ const fs = require('fs') const path = require('path') +const merge = require('merge') const { parsePages, @@ -30,6 +31,21 @@ function defaultCopy (name, value, json) { json[name] = value } +function isPlainObject (a) { + if (a === null) { + return false + } + return typeof a === 'object' +} + +function deepCopy (name, value, json) { + if (isPlainObject(value) && isPlainObject(json[name])) { + json[name] = merge.recursive(true, json[name], value) + } else { + defaultCopy(name, value, json) + } +} + const pagesJson2AppJson = { globalStyle: function (name, value, json) { json.window = parseStyle(value) @@ -115,7 +131,7 @@ const manifestJson2ProjectJson = { const platformJson2ProjectJson = { appid: defaultCopy, - setting: defaultCopy, + setting: deepCopy, miniprogramRoot: defaultCopy, cloudfunctionRoot: defaultCopy, qcloudRoot: defaultCopy, @@ -123,9 +139,9 @@ const platformJson2ProjectJson = { compileType: defaultCopy, libVersion: defaultCopy, projectname: defaultCopy, - packOptions: defaultCopy, - debugOptions: defaultCopy, - scripts: defaultCopy, + packOptions: deepCopy, + debugOptions: deepCopy, + scripts: deepCopy, cloudbaseRoot: defaultCopy }