What does the tilde (~) mean in my composer.json file?
Solution 1:
Tilde means next significant release. In your case, it is equivalent to >= 2.0, < 3.0
.
The full explanation is at Tilde Version Range docs page:
The
~
operator is best explained by example:~1.2
is equivalent to>=1.2 <2.0.0
, while~1.2.3
is equivalent to>=1.2.3 <1.3.0
.Another way of looking at it is that using
~
specifies a minimum version, but allows the last digit specified to go up.
Seldeak's below comment is a simple sum up explanation of the Composer documentation.
Solution 2:
Tilde
operator is useful for the projects that version their libraries using semantic versioning
scheme.
Semantic versioning
is more of a guideline that evaluates to the next significant release
.
For Composer, this operator means to allow minor releases (that can include patches) without allowing a major version (that may not be backward compatible) while installing and updating.
For example: ~4.1
will allow project versions >=4.1
but <5.0
.
Credits: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php
Solution 3:
The tilde ~
is one of many constraints that can be used to handle versions.
Next Significant Release Operators (~, ^):
The
~
operator is best explained by example:~1.2
is equivalent to>=1.2 <2.0.0
, while~1.2.3
is equivalent to>=1.2.3 <1.3.0
The
^
operator behaves very similarly, but it sticks closer to semantic versioning, and will always allow non-breaking updates. For example^1.2.3
is equivalent to>=1.2.3 <2.0.0
as none of the releases until 2.0 should break backwards compatibility. For pre-1.0 versions it also acts with safety in mind and treats^0.3
as>=0.3.0 <0.4.0
Hyphenated Version Range (-)
Inclusive set of versions. Partial versions on the right include are completed with a wildcard. For example
1.0 - 2.0
is equivalent to>=1.0.0 <2.1
as the2.0
becomes2.0.*
. On the other hand1.0.0 - 2.1.0
is equivalent to>=1.0.0 <=2.1.0
Wildcard Version Range (.*)
You can specify a pattern with a * wildcard.
1.0.*
is the equivalent of>=1.0 <1.1
Simple Version Range (>, >=, <, <=, !=)
By using comparison operators you can specify ranges of valid versions. Valid operators are >, >=, <, <=, !=.
You can define multiple ranges. Ranges separated by a space (
) or comma (
,
) will be treated as a logical AND. A double pipe (||
) will be treated as a logical OR. AND has higher precedence than OR.
And finally Exact Version Constraint
You can specify the exact version of a package Example:
1.0.2