# semver-utils

> Tools for manipulating semver strings and objects

Latest version **1.1.4** (published 2018-10-09) · APACHEv2 license · 0 weekly downloads

## Install

```sh
npm install semver-utils
pnpm add semver-utils
yarn add semver-utils
bun add semver-utils
```

## Health

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

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.4 |
| Published | 2018-10-09 |
| First published | 2013-04-24 |
| Weekly downloads | 0 |
| License | APACHEv2 |
| TypeScript types | separate (@types/semver-utils) |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 13.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | AJ ONeal |
| Maintainers | coolaj86 |
| Keywords | semver, parse, parseRange, range |

## Links

- npm: https://www.npmjs.com/package/semver-utils
- Repository: https://git.coolaj86.com/coolaj86/semver-utils.js
- npm.io page: https://npm.io/package/semver-utils

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.1.4 (latest) — 2018-10-09
- 1.1.3 — 2018-10-09
- 1.1.2 — 2018-03-28
- 1.1.1 — 2015-10-21
- 1.1.0 — 2013-05-22
- 1.0.3 — 2013-05-17
- 1.0.2 — 2013-05-17
- 1.0.1 — 2013-04-24
- 1.0.0 — 2013-04-24

## README

## semver-utils.js

| Sponsored by [ppl](https://ppl.family)

Some utils that aren't provided by the mainstream `semver` module.

### Usage

```bash
npm install --save semver-utils
```

```javascript
'use strict';

var semverUtils = require('semver-utils');
var version = require('./package.json').version;
var semver = semverUtils.parse(version);

console.log(semver);
```

## API

  * `semverUtils.parse(semverString)`
  * `semverUtils.stringify(semverObject)`
  * `semverUtils.parseRange(rangeString)`
  * `semverUtils.stringifyRange(rangeArray)`

### semverUtils.parse(semverString)

Turns a string such as `1.0.6-1+build-623` into the object

    { semver:   '1.0.6-1+build-623'
    , version:  '1.0.6'
    , major:    '1'
    , minor:    '0'
    , patch:    '6'
    , release:  '1'
    , build:    'build-623'
    }

returns `null` on **error**

### semverUtils.stringify(semverObject)

Creates a string such as `1.0.6-1+build-623` from the object

    { major:    '1'
    , minor:    '0'
    , patch:    '6'
    , release:  '1'
    , build:    'build-623'
    }

### semverUtils.parseRange(rangeString)

A solution to <https://github.com/isaacs/node-semver/issues/10>

Parses a range string into an array of semver objects

`>= 1.1.7 < 2.0.0 || 1.1.3` becomes

    [
        {
            "semver": ">= v1.1.7"
          , "operator": ">="
          , "major": 1
          , "minor": 1
          , "patch": 7
        }
      , {
            "semver": "< v2.0.0"
          , "operator": "<"
          , "major": 2
          , "minor": 0
          , "patch": 0
        }
      , {
            "operator": "||"
        }
      , {
            "semver": "v1.1.3"
          , "operator": "="
          , "major": 1
          , "minor": 1
          , "patch": 3
        }

    ]

### semverUtils.stringifyRange(rangeArray)

Creates a range string such as `>= 1.1.7 < 2.0.0 || 1.1.3`
from an array of semver objects (and operators) such as

    [
        { "semver": ">= v1.1.7"
        , "operator": ">="
        , "major": 1
        , "minor": 1
        , "patch": 7
        }
      , { "semver": "< v2.0.0"
        , "operator": "<"
        , "major": 2
        , "minor": 0
        , "patch": 0
        }
      , { "operator": "||"
        }
      , { "semver": "v1.1.3"
        , "operator": "="
        , "major": 1
        , "minor": 1
        , "patch": 3
        }

    ]

## Obsolete Work

  * https://github.com/mojombo/semver/issues/32
  * https://gist.github.com/coolaj86/3012865
  * https://github.com/isaacs/node-semver/issues/10
  * https://github.com/mojombo/semver.org/issues/59

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