# unidiff

> diff with unified diff format handling

Latest version **1.0.4** (published 2023-06-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install unidiff
pnpm add unidiff
yarn add unidiff
bun add unidiff
```

## 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.4 |
| Published | 2023-06-02 |
| First published | 2016-06-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 16.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 30 |
| Author | Matthew Voss |
| Maintainers | mvoss9000 |
| Keywords | example |

## Links

- npm: https://www.npmjs.com/package/unidiff
- Repository: https://github.com/mvoss9000/unidiff
- Homepage: https://github.com/mvoss9000/unidiff#readme
- Issues: https://github.com/mvoss9000/unidiff/issues
- npm.io page: https://npm.io/package/unidiff

## Dependencies (1)

- [diff](https://npm.io/package/diff.md) ^5.1.0

## Recent versions

- 1.0.4 (latest) — 2023-06-02
- 1.0.3 — 2023-06-02
- 1.0.2 — 2019-05-11
- 1.0.1 — 2018-12-14
- 0.0.4 — 2016-06-14
- 0.0.3 — 2016-06-14
- 0.0.2 — 2016-06-14
- 0.0.1 — 2016-06-14

## README

# unidiff #

unidiff adds support for creating [unified diff format](https://en.wikipedia.org/wiki/Diff_utility#Unified_format)
to [jsdiff](https://github.com/kpdecker/jsdiff)

The following snippet:

    var unidiff = require('unidiff')

    var diff = unidiff.diffLines(
        'a quick\nbrown\nfox\njumped\nover\nthe\nlazy\ndog\n',
        'a quick\nbrown\ncat\njumped\nat\nthe\nnot-so-lazy\nfox\n'
    )
    console.log(unidiff.formatLines(diff), {context: 2})

Produces this [unified diff](https://en.wikipedia.org/wiki/Diff_utility#Unified_format) output:

    --- a
    +++ b
    @@ -1,8 +1,8 @@
     a quick
     brown
    -fox
    +cat
     jumped
    -over
    +at
     the
    -lazy
    -dog
    +not-so-lazy
    +fox

This same output can be achieved more concisely using the diffAsText function:

    console.log(require('unidiff').diffAsText(
        'a quick\nbrown\nfox\njumped\nover\nthe\nlazy\ndog\n',
        'a quick\nbrown\ncat\njumped\nat\nthe\nnot-so-lazy\nfox\n'
    ))
    
Both formatLines() and diffAsText() take a format options parameter with the
following options.

    {
        aname:        file name for input a, defaults to 'a'
        bname:        file name for input b, defaults to 'b'
        pre_context:  write up to this many unmodified lines before each change
        post_context: write up to this many unmodified lines after each change
        context:      default values for pre_context and post_context (specify both in one setting)
                      (context defaults to 3 when nothing is specified)
        format:       format of output text.  currently only "unified" is supported
    }


## Differences From JSDiff ##
All js-diff functions are also availalbe in unidiff, with a couple minor changes:

* unidiff.diffLines() and unidiff.diffAsText() accept arrays of strings as well as strings with new lines for input.
* unidiff.diffLines() returns an empty array when there are no differences instead of an array with a single unmodified change.


## Useful features to add to unidiff ##

* implement parsing of unified format to convert text output into patches.

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