Para que serve ~ (til) e ^ (acento circunflexo) no esquema de versionamento
Michelly Oliveira
10:43:00
Considerando o modelo de versionamento semântico: MAJOR.MINOR.PATCH
Operador til (~)
O operador til (~) permite que último digito seja incrementado
~MAJOR.MINOR.PATCH >=MAJOR.MINOR.PATCH e < MAJOR.(MINOR+1).0
Ou seja, todos os PATCHs da versão MAJOR.MINOR
exemplo: ~ 1.2.3 irá corresponder a todas os PATCHs lançados depois da versão 1.2.3. >1.2.3 e <=1.3.0
Outros exemplos:
"vendor/package": "~1.3.2", // >=1.3.2 <1.4.0 "vendor/package": "~1.3", // >=1.3.0 <2.0.0
Operador circunflexo (^)
O operador circunflexo (^) procura a versão maior (MAJOR) mais recente.
Há uma exceção se a versão maior é zero. Neste caso o comportamento é buscar até a versão menor mais recente. Essa exceção existe para respeitar a regra 4 do versionamento semântico:
"No início do desenvolvimento, a versão Maior DEVE ser zero (0.y.z). Qualquer coisa pode mudar a qualquer momento. A API pública não deve ser considerada estável."
exemplo: ^ 1.2.3 corresponderá a qualquer versão 1.x.x, incluindo 1.3.0, mas suspenderá no 2.0.0.
Outros exemplos
"vendor/package": "^1.3.2", // >=1.3.2 <2.0.0 "vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // exceção se a versão maior (MAJOR)