semver-lite
Advanced tools
Comparing version 0.0.1 to 0.0.3
@@ -86,7 +86,19 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
var semver = { | ||
version: '1.0.0', | ||
version: '0.0.3', | ||
SemverVersion: SemverVersion, | ||
validate: function validate(version) { | ||
return SemverVersion.validate(version); | ||
}, | ||
compare: function compare(a, b, needCompareBuildVersion) { | ||
return new SemverVersion(a).compare(new SemverVersion(b), needCompareBuildVersion); | ||
}, | ||
format: function format(version) { | ||
return new SemverVersion(version).format(); | ||
}, | ||
instance: function instance(version) { | ||
return new SemverVersion(version); | ||
}, | ||
compareMainVersion: function compareMainVersion(a, b) { | ||
return new SemverVersion(a).compareMainVersion(new SemverVersion(b)); | ||
}, | ||
gt: function gt(a, b, needCompareBuildVersion) { | ||
@@ -96,2 +108,6 @@ var result = this.compare(a, b, needCompareBuildVersion); | ||
}, | ||
gte: function gte(a, b, needCompareBuildVersion) { | ||
var result = this.compare(a, b, needCompareBuildVersion); | ||
return result === 1 || result === 0; | ||
}, | ||
lt: function lt(a, b, needCompareBuildVersion) { | ||
@@ -101,2 +117,6 @@ var result = this.compare(a, b, needCompareBuildVersion); | ||
}, | ||
lte: function lte(a, b, needCompareBuildVersion) { | ||
var result = this.compare(a, b, needCompareBuildVersion); | ||
return result === -1 || result === 0; | ||
}, | ||
@@ -171,3 +191,2 @@ // 主版本转成数字类型方便比较 | ||
this.rawVersion = version; | ||
this.major = +matches[1]; | ||
@@ -182,3 +201,3 @@ this.minor = +matches[2]; | ||
if (matches[4]) { | ||
this.prerelease = matches[4].split('.').map(function (id) { | ||
this.prereleaseArray = matches[4].split('.').map(function (id) { | ||
if (/^[0-9]+$/.test(id)) { | ||
@@ -193,7 +212,11 @@ var num = +id; | ||
} else { | ||
this.prerelease = []; | ||
this.prereleaseArray = []; | ||
} | ||
this.buildVersion = matches[5]; | ||
this.build = matches[5] ? matches[5].split('.') : []; | ||
//this.build = matches[5] ? matches[5].split('.') : []; | ||
this.prerelease = matches[4]; | ||
this.build = matches[5]; | ||
this.mainVersion = [this.major, this.minor, this.patch].join('.'); | ||
this.version = this.mainVersion + (this.prerelease ? '-' + this.prerelease : '') + (this.build ? '+' + this.build : ''); | ||
} | ||
@@ -220,7 +243,2 @@ | ||
}, { | ||
key: 'validate', | ||
value: function validate(version) { | ||
return false; | ||
} | ||
}, { | ||
key: 'mainVersionToNumeric', | ||
@@ -281,7 +299,7 @@ value: function mainVersionToNumeric(digit) { | ||
value: function comparePreReleaseVersion(otherSemver) { | ||
if (this.prerelease.length && !otherSemver.prerelease.length) { | ||
if (this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { | ||
return -1; | ||
} else if (!this.prerelease.length && otherSemver.prerelease.length) { | ||
} else if (!this.prereleaseArray.length && otherSemver.prereleaseArray.length) { | ||
return 1; | ||
} else if (!this.prerelease.length && !otherSemver.prerelease.length) { | ||
} else if (!this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { | ||
return 0; | ||
@@ -291,4 +309,4 @@ } | ||
do { | ||
var a = this.prerelease[i]; | ||
var b = otherSemver.prerelease[i]; | ||
var a = this.prereleaseArray[i]; | ||
var b = otherSemver.prereleaseArray[i]; | ||
if (a === undefined && b === undefined) { | ||
@@ -310,10 +328,15 @@ return 0; | ||
value: function compareBuildVersion(otherSemver) { | ||
if (this.buildVersion && !otherSemver.buildVersion) { | ||
if (this.build && !otherSemver.build) { | ||
return 1; | ||
} else if (!this.buildVersion && otherSemver.buildVersion) { | ||
} else if (!this.build && otherSemver.build) { | ||
return -1; | ||
} else { | ||
return this.compareIdentifiers(this.buildVersion, otherSemver.buildVersion); | ||
return this.compareIdentifiers(this.build, otherSemver.build); | ||
} | ||
} | ||
}], [{ | ||
key: 'validate', | ||
value: function validate(version) { | ||
return REGEX_FULL_VERSION.test(version); | ||
} | ||
}]); | ||
@@ -320,0 +343,0 @@ |
{ | ||
"name": "semver-lite", | ||
"version": "0.0.1", | ||
"version": "0.0.3", | ||
"description": "semver compare library", | ||
@@ -10,3 +10,2 @@ "main": "src/index.js", | ||
"cover": "nyc npm test --all", | ||
"build-test": "rollup src/index.js --o dist/semver.js --f iife", | ||
"build": "webpack", | ||
@@ -13,0 +12,0 @@ "travis:coverage": "nyc npm test && nyc report --reporter=text-lcov | coveralls" |
@@ -1,3 +0,4 @@ | ||
# semver-lite | ||
# semver-lite [![Build Status](https://api.travis-ci.org/worktile/semver-lite.svg?branch=master)](https://travis-ci.org/worktile/semver-lite) | ||
**The lightweight semantic versioner compare library** | ||
@@ -10,3 +11,4 @@ | ||
1. only support semantic version compare; | ||
2. support browsers. | ||
2. support browsers; | ||
3. don't support semantic version range compare, if you need please use `node-semver`. | ||
@@ -28,12 +30,35 @@ ## Installation | ||
semver.validate('2.0.1-beta+20171213'); //true | ||
semver.validate('v2.0.1-beta+20171213'); //true | ||
semver.validate('2.0.1.1'); //false | ||
semver.compare('2.0.1', '1.0.10'); // 1 | ||
semver.compare('2.0.1', '2.0.1'); // 0 | ||
semver.compare('2.0.1', '3.0.10'); // -1 | ||
semver.gt('2.0.1', '1.0.10') // true | ||
semver.gt('2.0.1', '3.0.10') // false | ||
semver.lt('2.0.1', '1.0.10') // false | ||
semver.lt('2.0.1', '3.0.10') // true | ||
semver.compare('2.0.0-beta', '2.0.0'); // -1 | ||
semver.compare('2.0.0-beta', '2.0.0-1'); // 1 | ||
semver.compare('2.0.0-beta', '2.0.0-rc'); // -1 | ||
semver.compare('2.0.0-beta+20171013', '2.0.0-beta+20171014'); // 0 | ||
semver.compare('2.0.0-beta+20171013', '2.0.0-beta+20171014', true); // -1 | ||
semver.compareMainVersion('2.0.0-beta', '2.0.0-rc'); // 0 | ||
semver.compareMainVersion('2.0.1-beta', '2.0.0-rc'); // 1 | ||
semver.gt('2.0.1', '1.0.10'); // true | ||
semver.gt('2.0.1', '3.0.10'); // false | ||
semver.gte('2.0.1', '1.0.10'); // true | ||
semver.gte('2.0.1', '2.0.1'); // true | ||
semver.lt('2.0.1', '1.0.10'); // false | ||
semver.lt('2.0.1', '3.0.10'); // true | ||
semver.lte('2.0.1', '1.0.10'); // false | ||
semver.lte('2.0.1', '2.0.1'); // true | ||
semver.mainVersionToNumeric('1.10.12, 4); // 100100012 , 1 0010 0012 | ||
semver.mainVersionToNumeric('1.10.12', 6); // 1000010000012 , 1 000010 000012 | ||
semver.instance('v1.2.0-2+20171013').mainVersion; // '1.2.0' | ||
semver.instance('v1.2.0-2+20171013').version; // '1.2.0-2+20171013' | ||
semver.instance('v1.2.0-2+20171013').prerelease; // 2 | ||
``` | ||
As a browsers: | ||
As a browser: | ||
@@ -51,3 +76,11 @@ `<script src='./dist/semver.js'></script>` | ||
``` | ||
## Notes | ||
compare,gt,gte,lt,lte has thirdly third optional parameter `needCompareBuildVersion` what mark wheather compare build version, default is `false`. | ||
``` | ||
semver.compare('2.0.0+20171013', '2.0.0+20171014'); // 0 default false don't compare build version `20171014` | ||
semver.compare('2.0.0+20171013', '2.0.0+20171014', true); // -1 compare build version `20171014` | ||
``` | ||
## Links | ||
@@ -54,0 +87,0 @@ |
const SemverVersion = require('./semver'); | ||
const semver = { | ||
version: '0.0.1', | ||
version: '0.0.3', | ||
SemverVersion: SemverVersion, | ||
validate(version) { | ||
return SemverVersion.validate(version); | ||
}, | ||
compare(a, b, needCompareBuildVersion) { | ||
return new SemverVersion(a).compare(new SemverVersion(b), needCompareBuildVersion); | ||
}, | ||
format(version) { | ||
return new SemverVersion(version).format(); | ||
}, | ||
instance(version) { | ||
return new SemverVersion(version); | ||
}, | ||
compareMainVersion(a, b) { | ||
return new SemverVersion(a).compareMainVersion(new SemverVersion(b)); | ||
}, | ||
gt(a, b, needCompareBuildVersion) { | ||
@@ -13,2 +25,6 @@ const result = this.compare(a, b, needCompareBuildVersion); | ||
}, | ||
gte(a, b, needCompareBuildVersion) { | ||
const result = this.compare(a, b, needCompareBuildVersion); | ||
return result === 1 || result === 0; | ||
}, | ||
lt(a, b, needCompareBuildVersion) { | ||
@@ -18,2 +34,6 @@ const result = this.compare(a, b, needCompareBuildVersion); | ||
}, | ||
lte(a, b, needCompareBuildVersion) { | ||
const result = this.compare(a, b, needCompareBuildVersion); | ||
return result === -1 || result === 0; | ||
}, | ||
// 主版本转成数字类型方便比较 | ||
@@ -20,0 +40,0 @@ mainVersionToNumeric(version, digit = 4) { |
@@ -45,3 +45,2 @@ const MAX_LENGTH = 256; | ||
this.rawVersion = version; | ||
this.major = +matches[1]; | ||
@@ -56,3 +55,3 @@ this.minor = +matches[2]; | ||
if (matches[4]) { | ||
this.prerelease = matches[4].split('.').map(function (id) { | ||
this.prereleaseArray = matches[4].split('.').map(function (id) { | ||
if (/^[0-9]+$/.test(id)) { | ||
@@ -67,8 +66,17 @@ var num = +id; | ||
} else { | ||
this.prerelease = []; | ||
this.prereleaseArray = []; | ||
} | ||
this.buildVersion = matches[5]; | ||
this.build = matches[5] ? matches[5].split('.') : []; | ||
//this.build = matches[5] ? matches[5].split('.') : []; | ||
this.prerelease = matches[4]; | ||
this.build = matches[5]; | ||
this.mainVersion = [ | ||
this.major, | ||
this.minor, | ||
this.patch | ||
].join('.'); | ||
this.version = this.mainVersion | ||
+ (this.prerelease ? `-${this.prerelease}` : '') | ||
+ (this.build ? `+${this.build}` : ''); | ||
} | ||
@@ -93,4 +101,4 @@ | ||
validate(version) { | ||
return false; | ||
static validate(version) { | ||
return REGEX_FULL_VERSION.test(version); | ||
} | ||
@@ -150,7 +158,7 @@ | ||
comparePreReleaseVersion(otherSemver) { | ||
if (this.prerelease.length && !otherSemver.prerelease.length) { | ||
if (this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { | ||
return -1; | ||
} else if (!this.prerelease.length && otherSemver.prerelease.length) { | ||
} else if (!this.prereleaseArray.length && otherSemver.prereleaseArray.length) { | ||
return 1; | ||
} else if (!this.prerelease.length && !otherSemver.prerelease.length) { | ||
} else if (!this.prereleaseArray.length && !otherSemver.prereleaseArray.length) { | ||
return 0; | ||
@@ -160,4 +168,4 @@ } | ||
do { | ||
const a = this.prerelease[i]; | ||
const b = otherSemver.prerelease[i]; | ||
const a = this.prereleaseArray[i]; | ||
const b = otherSemver.prereleaseArray[i]; | ||
if (a === undefined && b === undefined) { | ||
@@ -179,8 +187,8 @@ return 0; | ||
compareBuildVersion(otherSemver) { | ||
if (this.buildVersion && !otherSemver.buildVersion) { | ||
if (this.build && !otherSemver.build) { | ||
return 1; | ||
} else if (!this.buildVersion && otherSemver.buildVersion) { | ||
} else if (!this.build && otherSemver.build) { | ||
return -1; | ||
} else { | ||
return this.compareIdentifiers(this.buildVersion, otherSemver.buildVersion); | ||
return this.compareIdentifiers(this.build, otherSemver.build); | ||
} | ||
@@ -187,0 +195,0 @@ } |
const test = require('ava'); | ||
const semver = require('../src/index'); | ||
// const old = require('../src/old'); | ||
@@ -45,4 +44,4 @@ test('compare 2.0.0 > 1.0.0 return 1', async t => { | ||
test('2.0.0 gt 1.0.0 return true', async t => { | ||
// gt | ||
test('2.0.0 gt 1.0.0 return true', async t => { | ||
t.is(semver.gt('2.0.0', '1.0.0'), true); | ||
@@ -59,3 +58,16 @@ }); | ||
// gte | ||
test('2.0.0 gte 1.0.0 return true', async t => { | ||
t.is(semver.gte('2.0.0', '1.0.0'), true); | ||
}); | ||
test('2.0.0 gte 2.0.0 return true', async t => { | ||
t.is(semver.gte('2.0.0', '2.0.0'), true); | ||
}); | ||
test('2.0.0 gte 3.0.0 return false', async t => { | ||
t.is(semver.gte('2.0.0', '3.0.0'), false); | ||
}); | ||
// lt | ||
test('1.0.0 lt 2.0.0 return true', async t => { | ||
@@ -69,4 +81,54 @@ t.is(semver.lt('1.0.0', '2.0.0'), true); | ||
test('3.0.0 lt 2.0.0 return true', async t => { | ||
test('3.0.0 lt 2.0.0 return false', async t => { | ||
t.is(semver.lt('3.0.0', '2.0.0'), false); | ||
}); | ||
// lte | ||
test('1.0.0 lte 2.0.0 return true', async t => { | ||
t.is(semver.lte('1.0.0', '2.0.0'), true); | ||
}); | ||
test('2.0.0 lte 2.0.0 return true', async t => { | ||
t.is(semver.lte('2.0.0', '2.0.0'), true); | ||
}); | ||
test('3.0.0 lt 2.0.0 return false', async t => { | ||
t.is(semver.lte('3.0.0', '2.0.0'), false); | ||
}); | ||
// mainVersionToNumeric | ||
test('version 1.10.12-beta+20130222 main version to numeric is 100100012', async t => { | ||
t.is(semver.mainVersionToNumeric('1.10.12'), 100100012); | ||
}); | ||
test('version 1.10.12-beta+20130222 main version to numeric is 100100012', async t => { | ||
t.is(semver.mainVersionToNumeric('1.10.12', 6), 1000010000012); | ||
}); | ||
test('version 1.10111.12 main version to numeric is 1101110012', async t => { | ||
t.is(semver.mainVersionToNumeric('1.10111.12'), 1101110012); | ||
}); | ||
test('compare main version 1.0.0-rc and 1.0.0-beta return 0', async t => { | ||
t.is(semver.compareMainVersion('1.0.0-rc', '1.0.0-beta'), 0); | ||
}); | ||
test('compare main version 1.2.0-2+123 and 1.0.10-beta return 1', async t => { | ||
t.is(semver.compareMainVersion('1.2.0-2+123', '1.0.10-beta'), 1); | ||
}); | ||
test('get version 1.2.0-2+20171013 is 1.2.0-2+20171013', async t => { | ||
t.is(semver.instance('1.2.0-2+20171013').version, '1.2.0-2+20171013'); | ||
}); | ||
test('get version v1.2.0-2+20171013 is 1.2.0-2+20171013', async t => { | ||
t.is(semver.instance('v1.2.0-2+20171013').version, '1.2.0-2+20171013'); | ||
}); | ||
test('get main version 1.2.0-2+20171013 is 1.2.0-2', async t => { | ||
t.is(semver.instance('1.2.0-2+20171013').mainVersion, '1.2.0'); | ||
}); | ||
test('get main version v1.2.0-2+20171013 is 1.2.0', async t => { | ||
t.is(semver.instance('v1.2.0-2+20171013').mainVersion, '1.2.0'); | ||
}); |
@@ -12,2 +12,24 @@ const test = require('ava'); | ||
t.is(semverVersion.mainVersionToNumeric(4), 1101110012); | ||
}); | ||
test('version 1.10111.12 is validated', async t => { | ||
t.is(SemverVersion.validate('1.10111.12'), true); | ||
}); | ||
// validate | ||
test('validate version v1.10111.12 return true', async t => { | ||
t.is(SemverVersion.validate('v1.10111.12'), true); | ||
}); | ||
test('validate version 1.10111.12-beta+20171013 return true', async t => { | ||
t.is(SemverVersion.validate('1.10111.12-beta+20171013'), true); | ||
}); | ||
test('validate version 1.10111a.12-beta+20171013 return false', async t => { | ||
t.is(SemverVersion.validate('1.10111a.12-beta+20171013'), false); | ||
}); | ||
test('validate version 1.0.0.1 return false', async t => { | ||
t.is(SemverVersion.validate('1.10111a.12-beta+20171013'), false); | ||
}); |
@@ -7,17 +7,9 @@ const path = require('path'); | ||
output: { | ||
// webpack 如何输出结果的相关选项 | ||
path: path.resolve(__dirname, "dist"), // string | ||
// 所有输出文件的目标路径 | ||
// 必须是绝对路径(使用 Node.js 的 path 模块) | ||
filename: "semver.js", // string | ||
library: "semverLite", // string, | ||
libraryTarget: "umd", // 通用模块定义 | ||
path: path.resolve(__dirname, "dist"), | ||
filename: "semver.js", | ||
library: "semverLite", | ||
libraryTarget: "umd" | ||
}, | ||
module: { | ||
// 关于模块配置 | ||
rules: [ | ||
@@ -38,5 +30,2 @@ { | ||
resolve: { | ||
// 解析模块请求的选项 | ||
// (不适用于对 loader 解析) | ||
modules: [ | ||
@@ -46,16 +35,6 @@ "node_modules", | ||
], | ||
// 用于查找模块的目录 | ||
extensions: [".js", ".json"], | ||
}, | ||
context: __dirname, // string(绝对路径!) | ||
// webpack 的主目录 | ||
// entry 和 module.rules.loader 选项 | ||
// 相对于此目录解析 | ||
target: "web", // 枚举 | ||
// 包(bundle)应该运行的环境 | ||
// 更改 块加载行为(chunk loading behavior) 和 可用模块(available module) | ||
context: __dirname, | ||
target: "web" | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
43370
15
710
92