diff --git a/packages/@vue/cli/lib/util/__tests__/extendJSConfig.spec.js b/packages/@vue/cli/lib/util/__tests__/extendJSConfig.spec.js index c998b6ed8f..7eff50cd7b 100644 --- a/packages/@vue/cli/lib/util/__tests__/extendJSConfig.spec.js +++ b/packages/@vue/cli/lib/util/__tests__/extendJSConfig.spec.js @@ -61,3 +61,21 @@ module.exports = config` module.exports = config` ) }) + +test(`with extra assignment expression`, () => { + const value = { + foo: true + } + const source = +`process.env.VUE_APP_TEST = 'test' +module.exports = { + bar: 123 +}` + expect(extend(value, source)).toMatch( + `process.env.VUE_APP_TEST = 'test' +module.exports = { + bar: 123, + foo: true +}` + ) +}) diff --git a/packages/@vue/cli/lib/util/extendJSConfig.js b/packages/@vue/cli/lib/util/extendJSConfig.js index 1559b853fe..17d13603e4 100644 --- a/packages/@vue/cli/lib/util/extendJSConfig.js +++ b/packages/@vue/cli/lib/util/extendJSConfig.js @@ -7,7 +7,8 @@ module.exports = function extendJSConfig (value, source) { const ast = recast.parse(source) recast.types.visit(ast, { - visitAssignmentExpression ({ node }) { + visitAssignmentExpression (path) { + const { node } = path if ( node.left.type === 'MemberExpression' && node.left.object.name === 'module' && @@ -21,6 +22,7 @@ module.exports = function extendJSConfig (value, source) { } return false } + this.traverse(path) } })