Pular para o conteúdo
Todos os conceitos

Faixa de versão e versão fixa

Uma faixa como ^1.2.0 deixa a instalação puxar sozinha a versão mais nova que couber; uma versão fixa, não.

No manifesto você pode pedir uma dependência de dois jeitos. Fixa: "date-tools": "1.4.3" instala exatamente 1.4.3, sempre. Em faixa: "date-tools": "^1.2.0" aceita qualquer versão de 1.2.0 (inclusive) até 2.0.0 (exclusive), e o instalador puxa a mais nova que couber. O acento circunflexo (^) deixa subir menor e correção; o til (~1.2.0) deixa subir só a correção.

A faixa é cômoda (você ganha correções sem mexer no manifesto), mas perigosa: se uma versão nova dentro da faixa introduz uma falha, um install futuro a traz sozinho, sem você pedir. Por isso existem o lockfile (que grava a versão exata resolvida, para todos instalarem igual) e o hábito de fixar versões sensíveis.

Exemplo: o manifesto pede ^1.2.0 e o registro tem até 1.9.0. Um npm install resolve para 1.9.0 (a mais nova da faixa). O aviso diz que date-tools é afetado em >= 1.5.0 < 1.9.2, então 1.9.0 caiu bem no buraco. Ao lado, report-gen estava fixo em 3.0.1 e nem se moveu. O conserto é fixar date-tools numa versão boa (como 1.4.3) e versionar o lockfile. Em Python, date-tools>=1.2 é a faixa e date-tools==1.4.3 é a versão fixa.

a faixa ^1.2.0 aceita isto faixa afetada (aviso) versões de date-tools 1.2.0 1.4.3 1.5.0 1.8.0 1.9.0 2.0.0 o install pega a mais nova: 1.9.0, dentro do aviso
A faixa ^1.2.0 cobre um trecho da reta de versões; a instalação pega a ponta mais nova, que pode cair dentro da faixa afetada pelo aviso.

Aparece nestes desafios