# deep-merge

> Deep merge objects with custom merging logic

Latest version **1.0.0** (published 2014-11-22) · 0 weekly downloads

## Install

```sh
npm install deep-merge
pnpm add deep-merge
yarn add deep-merge
bun add deep-merge
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2014-11-22 |
| First published | 2013-02-21 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 17 |
| Author | Raynos |
| Maintainers | raynos |

## Links

- npm: https://www.npmjs.com/package/deep-merge
- Repository: https://github.com/Raynos/deep-merge
- Issues: https://github.com/Raynos/deep-merge/issues
- npm.io page: https://npm.io/package/deep-merge

## Dependencies (1)

- [xtend](https://npm.io/package/xtend.md) ~1.0.3

## Recent versions

- 1.0.0 (latest) — 2014-11-22
- 0.3.1 — 2013-12-19
- 0.2.1 — 2013-12-19
- 0.1.3 — 2013-03-06
- 0.1.2 — 2013-02-21

## README

# deep-merge

[![build status][1]][2] [![dependency status][3]][4]

[![browser support][5]][6]

Deep merge objects with custom merging logic

## Deprecated

Use [deep-extend](https://github.com/unclechu/node-deep-extend) instead of this module.

## Example

When you create a merge "strategy" you can configure how two
values should merge when they have the same key. For example
you may want them to be combined into a single array.

```js
var DeepMerge = require("deep-merge")
var assert = require("assert")

var merge = DeepMerge(function mergeStrategy(target, source, key) {
    return [].concat(target, source)
})

var res = merge({
    foo: ["hello"]
}, {
    foo: "goodbye"
})

assert.deepEqual(res, { foo: ["hello", "goodbye"] })
```

By default objects will recursely call your `mergeStrategy` on
your the values for a key and construct a new object with the
key and the value returned from your merge

### Merging multiple objects

```js
var DeepMerge = require("deep-merge/multiple")
var merge = DeepMerge(function (a, b) {
    return b
})

var obj = merge([
    { a: "a" },
    { b: "b" },
    { c: { d: "d" } },
    { c: { e: "e" } }
])

assert.deepEqual(obj.c, { d: "d", e: "e" })
```

## Installation

`npm install deep-merge`

## Contributors

 - Raynos

## MIT Licenced

  [1]: https://secure.travis-ci.org/Raynos/deep-merge.png
  [2]: http://travis-ci.org/Raynos/deep-merge
  [3]: http://david-dm.org/Raynos/deep-merge/status.png
  [4]: http://david-dm.org/Raynos/deep-merge
  [5]: http://ci.testling.com/Raynos/deep-merge.png
  [6]: http://ci.testling.com/Raynos/deep-merge

---
_Source: https://npm.io/package/deep-merge · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
