Skip to content

Commit 6af7bbe

Browse files
dhenscheyyx990803
authored andcommitted
fix: deep merge objects when extending package.json via plugins (#1070)
close #1053
1 parent cac18f2 commit 6af7bbe

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

packages/@vue/cli/__tests__/Generator.spec.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ test('api: extendPackage', async () => {
4949
list: [1],
5050
vue: {
5151
foo: 1,
52-
bar: 2
52+
bar: 2,
53+
pluginOptions: {
54+
graphqlMock: true,
55+
apolloEngine: false
56+
}
5357
}
5458
},
5559
plugins: [{
@@ -60,7 +64,10 @@ test('api: extendPackage', async () => {
6064
list: [2],
6165
vue: {
6266
foo: 2,
63-
baz: 3
67+
baz: 3,
68+
pluginOptions: {
69+
enableInSFC: true
70+
}
6471
}
6572
})
6673
}
@@ -76,7 +83,12 @@ test('api: extendPackage', async () => {
7683
vue: {
7784
foo: 2,
7885
bar: 2,
79-
baz: 3
86+
baz: 3,
87+
pluginOptions: {
88+
graphqlMock: true,
89+
apolloEngine: false,
90+
enableInSFC: true
91+
}
8092
}
8193
})
8294
})

packages/@vue/cli/lib/GeneratorAPI.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const fs = require('fs')
22
const ejs = require('ejs')
33
const path = require('path')
44
const globby = require('globby')
5+
const merge = require('deepmerge')
56
const resolve = require('resolve')
67
const isBinary = require('isbinaryfile')
78
const yaml = require('yaml-front-matter')
@@ -105,7 +106,7 @@ class GeneratorAPI {
105106
} else if (Array.isArray(value) && Array.isArray(existing)) {
106107
pkg[key] = existing.concat(value)
107108
} else if (isObject(value) && isObject(existing)) {
108-
pkg[key] = Object.assign({}, existing, value)
109+
pkg[key] = merge(existing, value)
109110
} else {
110111
pkg[key] = value
111112
}

0 commit comments

Comments
 (0)