user3718908x100
user3718908x100

Reputation: 8509

Using Composer.json file

Hello I am using composer.json file to load packages into my application however there are some things I would like to know. In my composer.json file I have this:

"require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "guzzlehttp/guzzle": "~6.x",
        "barryvdh/laravel-debugbar": "^2.0",
        "barryvdh/laravel-cors": "0.7.x",
        "tymon/jwt-auth": "1.0.0-alpha.1",
        "kodeine/laravel-acl": "~1.0@dev",
        "intervention/image": "^2.x",
        "jenssegers/date": "^3.0"
    },

I would like to know what these symbols mean: "^", "~", "x" next to the numbers which I know are the version numbers.

Upvotes: 3

Views: 912

Answers (1)

Alexey Mezenin
Alexey Mezenin

Reputation: 163788

They mean that when you'll run composer update, these packages will be updated only up to selected versions. For example, if you'll tell composer laravel/framework": "5.2.*",, framework will never be updated to 5.3, but only up to latest 5.2.*

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

You can specify a pattern with a * wildcard. 1.0.* is the equivalent of >=1.0 <1.1

https://getcomposer.org/doc/articles/versions.md

Upvotes: 6

Related Questions