Skip to content

diff(v1, v2): difference in versions, such as major, minor, patch #83

@dylang

Description

@dylang

Purpose

Discover the difference between two versions.

API

semver.diff(v1, v2)

  • v1 and v2 are required semver strings.
  • Order does not matter. semver.diff(v1, v2) === semver.div(v2, v1)
  • Output is a release type string, the same values that semver.inc accepts as input:
    • major
    • premajor
    • minor
    • preminor
    • patch
    • prepatch
    • prerelease (only difference is the prerelease tag)
  • Only one string is returned. The "largest" change has precedence. For example if there is a major and minor difference, only major is returned.
  • If the versions are the same null is returned.
  • Throws if an invalid semver string is provided.

Examples

  • diff('1.2.3', '0.2.3') : 'major'
  • diff('1.4.5', '0.2.3') : 'major'
  • diff('0.2.3', '1.4.5') : 'major'
  • diff('0.0.1', '0.0.1-pre') : 'prelease'
  • diff('0.0.1', '0.0.1-pre-2') : 'prelease'
  • diff('1.1.0', '1.1.0-pre') : 'prerelease'
  • diff('1.0.1', '1.1.0-pre') : 'preminor'
  • diff('1.0.0', '1.0.0') : null
  • diff('cow', 'chicken') : TypeError: Invalid Version: 'cow'

This design and usefulness of this is open for discussion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions