DEV Community

Jessilyneh
Jessilyneh

Posted on • Edited on

36 3 1 1 1

O que os símbolos(~) e (^) representam nas dependências de projetos?

Em português: (~) til e (^) circunflexo. Em inglês, (~) tilde e (^) caret. Você pode continuar chamando esses símbolos pelo apelido carinhoso (minhoquinha e chapeuzinho) mas agora já sabe os nomes técnicos.

Uso dos símbolos ^ e ~

Em arquivos package.json, package-lock.json ou outro que especifique dependências, você pode encontrar os símbolos de ^ e ~ antes do range (intervalo) de versão:

      "dependencies": {
        "basic-auth": "^2.0.1",
        "chalk": "^4.1.2",
        "corser": "^2.0.1",
        "he": "^1.2.0",
        "html-encoding-sniffer": "^3.0.0",
        "http-proxy": "^1.18.1",
        "mime": "^1.6.0",
        "minimist": "^1.2.6",
        "opener": "^1.5.1",
        "portfinder": "^1.0.28",
        "secure-compare": "3.0.1",
        "union": "~1.5.0",
        "url-join": "^4.0.1"
      },
Enter fullscreen mode Exit fullscreen mode

Entenda cada parte:

(~) ou (^) especificam os intervalos de versão

(~) “aproximadamente equivalente à versão”

(^) “compatível com a versão”

X.Y.Z (major.minor.patch), juntos nesta ordem e formato, indicam o número de versão. Individualmente, Z, Y e Z são identificadores de versão

major (maior), minor (minor) e patch (correção) são categorias de numero de versão

^X.Y.Z ou ~X.Y.Z juntos nesta ordem e formato, formam ranges de versão

Ranges de versão especificam quais intervalos (de A até B, exceto B) de versões de uma dependência funcionarão no projeto.

Aproximadamente equivalente à versão(~) como em "union": "~1.5.0" , permite alterações do identificador de patch se uma versão no identificador minor corresponder ao especificado no comparador.

Em "union": "~1.5.0" , ~ permite versões de 1.5.0 até 1.5.99 mas não inclui 1.6.0. As versões major e minor devem corresponder ao valor do identificador especificado, mas qualquer versão de patch maior ou igual à especificada é válida.

Compatível com a versão (^) permite alterações que não modifiquem o identificador que esteja mais à esquerda, aceitando atualizações minor e de patch para as versões 1.0.0 e superiores. Para versões que modificam apenas o patch, por exemplo ^0.0.1 o range permitido seria >=0.0.1 <0.0.2 , já que não podemos modificar o valor mais à esquerda, o 1.

Em "url-join: "^4.0.1" o identificador mais à esquerda é o major. Qualquer versão minor ou de patch que seja maior ou igual ao especificado é válida. O ^ permitiria versões até 4.99.99 por exemplo mas, não permitira 5.0.0 porque o 4 é o dígito mais a esquerda em "^4.0.1".

Ilustrando o que foi dito:

Tabela de significado de símbolos citados no texto
Print retirado de https://devhints.io/semver em 07/03/2023

Links para se aprofundar nos assuntos:

Comparadores
Comparador de versões avançado
Diferença entre build, version e release
Diferença entre til e circunflexo
Major, minor e patch
Range de versões
Versão de software
Versionamento

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (10)

Collapse
 
jjeanjacques10 profile image
Jean Jacques Barros

Muito bom o artigo! Parabéns!

Collapse
 
jessilyneh profile image
Jessilyneh

Ah, muito obrigada :D

Collapse
 
douglasffilho profile image
Douglas Fernandes

Semver é uma assunto muito interessante e, na prática, facilita muito a remoção de entraves na coexistência de codependencias com seus dependentes. Amei o artigo.

Collapse
 
jessilyneh profile image
Jessilyneh

Sim! É um assunto que eu tenho visto muito no trabalho e, até por isso, escrevi sobre. Fico muito feliz que foi util :D

Collapse
 
cleber_soares profile image
Cleber Soares

Artigo excelente !!

Collapse
 
jessilyneh profile image
Jessilyneh

muito obrigada :D

Collapse
 
lubarinobr profile image
Matheus Lubarino

Muito obrigado, por mais que uso o package.json com certa frequência nunca tinha parado para pensar para que isso servia, muito obrigado.

Collapse
 
jessilyneh profile image
Jessilyneh

Ah, que bom :D Eu que agradeço!

Collapse
 
eduardojm profile image
Eduardo Oliveira

Obrigadoo! muito esclarecedor!

Collapse
 
jessilyneh profile image
Jessilyneh

Ah, obrigada e fico muito feliz que foi util

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay