code: function compare(v1, v2) {
    // Omit the starting `v`.
    const rawv1 = omitv(v1)
    const rawv2 = omitv(v2)
    let v1data, v2data
    try {
      v1data = numberedVersionData(rawv1)
      v2data = numberedVersionData(rawv2)
    } catch (e) {
      return asciiVersionCompare(rawv1, rawv2)
    }
  
    // Compare the numbered part (eg, 1.0.0 < 2.0.0).
    const numbersCompare = listCompare(v1data.numbers, v2data.numbers)
    if (numbersCompare !== 0) {
      return numbersCompare
    }
  
    // Compare the modifiers (eg, alpha < beta).
    if (v1data.modifier < v2data.modifier) {
      return -1
    } else if (v1data.modifier > v2data.modifier) {
      return 1
    }
  
    // Compare the modifier counts (eg, alpha1 < alpha3).
    if (v1data.modifierCount < v2data.modifierCount) {
      return -1
    } else if (v1data.modifierCount > v2data.modifierCount) {
      return 1
    }
  
    return 0
  }
docs: Return a negative value if v1 < v2, zero if v1 = v2, a positive value otherwise.  See https://getcomposer.org/doc/04-schema.md#version and https://github.com/badges/shields/issues/319#issuecomment-74411045