O que significa o til (~) em meu arquivo composer.json?


115

Eu tenho esta linha em meu arquivo composer.json:

"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},

O que significa exatamente o til ~em ~2.0@dev? É que um espaço reservado e deve sempre buscar as subversões, como 1.2.0, 2.2.0, 3.2.0e assim por diante? Não faz sentido (e seria feito pelo *curinga).

A documentação composer.json não diz nada sobre o til.

Estou perguntando porque acabei de ler sobre um problema de segurança no blog do Symfony e eles recomendam atualizar para a versão 1.3.3. Mas descobrir a versão do FOSUserBundle não é tão fácil (não consegui encontrar um arquivo que contenha a versão).

Respostas:


142

Tilde significa próximo lançamento significativo . No seu caso, é equivalente a >= 2.0, < 3.0.

A explicação completa está na página de documentos do intervalo de versões do Tilde :

O ~operador é melhor explicado por exemplo: ~1.2é equivalente a >=1.2 <2.0.0, enquanto ~1.2.3é equivalente a >=1.2.3 <1.3.0.

Outra maneira de ver isso é que o uso ~especifica uma versão mínima, mas permite que o último dígito especificado suba.

O comentário de Seldeak abaixo é uma explicação simples e resumida da documentação do Composer.


73
Gosto de colocar isso de uma forma simples e prática que o ~ permite que o último dígito suba. por exemplo, ~2.2significa 2,2 e qualquer 2.x onde x é 2 ou superior. ~2.1.3no também é qualquer 2.1.x onde x é 3 ou superior.
Seldaek

2
Como é ~2.0diferente de 2.*? Só é útil se o último dígito não for 0?
Jesse de

24
~ 2.0 e 2. * são iguais, MAS ~ 2.3 e 2. * são diferentes porque ~ 2.3 não permite versões abaixo de 2.3, enquanto 2. * permite 2.0, 2.1, 2.2, etc.
AlterPHP

2

Tildeoperador é útil para projetos que criam versões de suas bibliotecas usando o semantic versioningschema.

Semantic versioningé mais uma diretriz que avalia o next significant release.

Para o Composer, este operador significa permitir lançamentos menores (que podem incluir patches) sem permitir uma versão principal (que pode não ser compatível com versões anteriores) durante a instalação e atualização .

Por exemplo: ~4.1permitirá versões de projeto, >=4.1mas <5.0.

Créditos: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php


0

O til ~em ~2.0@dev exatamente média a subir para a versão imediata:

Por exemplo :

Se tivermos ~2.0@dev, vai para a próxima versão imediata => ~2.x@dev

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.