Webpack-merge和Object.assign()有什么区别?

Web*_*man 6 javascript webpack

我正在使用webpack,最后我看不到这个包的机会,因为似乎Object.assign完成了这项工作,但也许这个包之间有什么东西?

谢谢

apo*_*llo 10

"webpack-merge"npm包和Object.assign()(或对象扩展)之间的区别在于它们如何处理具有相同名称的属性:

const webpackMerge = require("webpack-merge");

const object1 = {
  'x': [{'a': 'a' }, { 'b': 'b' }]
}

const object2 = {
  'x': [{'c': 'c' }, { 'd': 'd' }]
}

console.log('result webpackMerge: ',
  webpackMerge(object1, object2)
)

console.log('result Object.assign: ',
  Object.assign({}, object1, object2)
)

console.log('result Object.spread: ',
  {...object1, ...object2}
)
Run Code Online (Sandbox Code Playgroud)

以上将给你:

result webpackMerge:  { x: [ { a: 'a' }, { b: 'b' }, { c: 'c' }, { d: 'd' } ] }
result Object.assign:  { x: [ { c: 'c' }, { d: 'd' } ] }
result Object spread:  { x: [ { c: 'c' }, { d: 'd' } ] }
Run Code Online (Sandbox Code Playgroud)

正如您在上面所看到的,Object.assign()(或Object spread)用后一个属性覆盖以前属性的值,而webpack-merge连接数组的元素.

请参阅Runkit中的上述代码

  • 要了解有关 webpack-merge 附加功能的更多信息,请参阅:https://medium.com/@tang.apollo/how-does-webpack-merge-work-in-webpack-config-232b0d5d7853 (2认同)