AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

range

简介

Yuka js库的Version的range模块可以用来匹配版本号。

用法

range模块暴露了一个Range类,该类有一个接收version字符串参数的构造函数,构造出来的实例可以通过test(version)方法来检测传入的版本号是否匹配当前Range实例。

示例

import { Range } from 'yuka';

const anyVersion = new Range('*'); // 匹配所有版本

console.log(anyVersion.test('1.0.0')); // true
console.log(anyVersion.test('2.3.1-beta.3')); // true

const greaterThan = new Range('>1.0');

console.log(greaterThan.test('0.9.9')); // false
console.log(greaterThan.test('1.0.0')); // false
console.log(greaterThan.test('1.0.1')); // true
console.log(greaterThan.test('2.0.0')); // true

Range格式

Range类的构造函数可以接受一个version字符串来构造一个版本号范围。范围字符串可以使用下列运算符进行组合。

  • =: 精确匹配某个版本号。
  • >: 匹配所有更高版本号。
  • >=: 匹配所有更高或同等版本号。
  • <: 匹配所有更低版本号。
  • <=: 匹配所有更低或同等版本号。
  • -: 指定一个版本号区间。
  • ||: 将两个版本号范围进行并集计算。

范围字符串可以组成复合表达式。

示例

  • 1.0.0 精确匹配版本号 "1.0.0"
  • >1.0.0 匹配所有高于 "1.0.0" 的版本号
  • >=1.0.0 匹配所有高于或等于 "1.0.0" 的版本号
  • <1.0.0 匹配所有低于 "1.0.0" 的版本号
  • <=1.0.0 匹配所有低于或等于 "1.0.0" 的版本号
  • 1.0.0 - 2.0.0 匹配所有介于 "1.0.0" 和 "2.0.0" 之间的版本号
  • 1.0.0 || >=2.0.0 匹配 "1.0.0" 以及高于等于 "2.0.0" 的版本号

特性

Yuka js库的range模块可以处理一些特殊的符号。

  • x, *: 可以描述版本号中缺失的部分,例如 1.2.x
  • -: 可以描述范围区间,例如 1.2.3 - 1.3.0

参考资料

  • semver:语义化版本规范
  • npm:npm的语义化版本解释器实现文档。