# `NPMSemver.Version`
[🔗](https://github.com/dannote/npm_semver/blob/v0.1.0/lib/npm_semver/version.ex#L1)

npm-compatible semver version parsing and comparison.

# `t`

```elixir
@type t() :: %NPMSemver.Version{
  build: [String.t()],
  major: non_neg_integer(),
  minor: non_neg_integer(),
  patch: non_neg_integer(),
  pre: [String.t() | integer()]
}
```

# `compare`

```elixir
@spec compare(t(), t()) :: :lt | :eq | :gt
```

Compare two versions. Returns `:lt`, `:eq`, or `:gt`.

# `parse`

```elixir
@spec parse(
  String.t(),
  keyword()
) :: {:ok, t()} | :error
```

Parse a version string.

In loose mode, accepts `v`-prefixed versions and pre-release tags
without the `-` separator (e.g., `1.2.3beta`).

# `to_string`

```elixir
@spec to_string(t()) :: String.t()
```

Format a version struct back to a string.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
