npm
^は最左の非ゼロのバージョンを固定する。
公式のTilde Ranges, Caret Ranges
| 例 | 説明 |
|---|---|
^1.2.3 |
メジャーバージョンまで固定。1.2.4、1.3.0は許可。2.0.0は許可しない |
^0.1.2 |
マイナーバージョンまで固定。0.1.3は許可。0.2.0は許可しない |
~1.2.3 |
マイナーバージョンまで固定。1.2.4は許可。1.3.0は許可しない |
下記ページで実際に記法をテストできる。
https://semver.npmjs.com/
bundler
| 例 | 説明 |
|---|---|
~> 1 |
メジャーバージョンまで固定。1.1は許可。2.0は許可しない |
~> 1.2 |
メジャーバージョンまで固定。1.3は許可。2.0は許可しない |
~> 1.2.3 |
マイナーバージョンまで固定。1.2.4は許可。1.3.0は許可しない |
下記コードで実際に記法をテストできる。
require 'rubygems'
def matches_requirement?(requirement_str, version_str)
requirement = Gem::Requirement.new(requirement_str)
version = Gem::Version.new(version_str)
requirement.satisfied_by?(version)
end
# 動作例
p matches_requirement?('~> 1.2', '1.3.0') # => true
p matches_requirement?('~> 1.2', '1.9.9') # => true
p matches_requirement?('~> 1.2', '2.0.0') # => false
p matches_requirement?('~> 1.2.3', '1.2.4') # => true
p matches_requirement?('~> 1.2.3', '1.2.9') # => true
p matches_requirement?('~> 1.2.3', '1.3.0') # => false