Like `Object.assign()` but deep 😱
npm install @alexbinary/object-deep-assignLike Object.assign() but deep 😱





Ever needed to do Object.assign() but couldn't because you had nested objects that got overwritten instead of merged ?
object-deep-assign merges objects recursively and can work with any depth. It has an API similar to Object.assign().
object-deep-assign comes handy when you need to deal with e.g. configuration objects when you have a layered config system (e.g. a default, global and local config).
``javascript
let objectDeepAssign = require('@alexbinary/object-deep-assign')
let defaultConf = {
build: true,
notify: {
on_success: false,
on_failure: true,
options: {
admin_only: true
retry: 1
}
}
}
let globalConf = {
notify: {
on_success: true
options: {
retry: 2
}
}
}
let userConf = {
notify: {
options:
admin_only: false
retry: 3
},
deploy: true
}
let finalConf = objectDeepAssign({}, defaultConf, globalConf, userConf)
// finalConf = {
// build: true,
// deploy: true,
// notify: {
// on_success: true,
// on_failure: true,
// options: {
// admin_only: false,
// retry: 3
// }
// }
// }
`
I wanted to try and write this thing myself, with the simplest code possible.
The code is written in plain ES2015, so it does not run on node before version 6.
`bash`
$ npm install @alexbinary/object-deep-assignor
$ yarn add @alexbinary/object-deep-assign
`javascript`
let objectDeepAssign = require('@alexbinary/object-deep-assign')
Copies properties of sources onto target.
Scalar properties with same name are replaced. Object properties are merged recursively. Sources are merged sequentially into target from left to right.
Returns target.
Tests are written with mocha and chai. To run the tests first do :
`bashyarn
$ npm install # or ``
to install the dev dependencies, and then do :bashyarn test
$ npm test # or `
To run the test in watch mode do :
`bashyarn testw
$ npm testw # or ``
Contributions are welcome, feel free to open issues and submit pull requests on GitHub !
- object-assign-deep by saikojosh
- object-extender by saikojosh
- deep-assign by sindresorhus
- assign-deep by jonschlinkert
- merge-deep by jonschlinkert
- mixin-deep by jonschlinkert
- mini-deep-assign by alykoshin
- object-merge by kastor
MIT