Escreva um intervalo do package.json (^1.2.3, ~1.2.3, 1.x, >=1.0.0 <2.0.0, ||) e veja exatamente que versões aceita. Carregue a lista real de versões de qualquer pacote npm ou cole a sua.
Experimente:
Equivale a
>=1.2.3 <2.0.0-0
pelo menos 1.2.3, abaixo de 2.0.0, sem nenhum dos seus pré-lançamentos
Versão mais alta aceite: 1.9.9 · 4 de 9 versões aceites
^ (caret) permite qualquer alteração que não mude o primeiro número diferente de zero a contar da esquerda: ^1.2.3 é >=1.2.3 <2.0.0, mas ^0.2.3 é >=0.2.3 <0.3.0 e ^0.0.3 só aceita 0.0.3.
~ (til) permite correções quando é indicada uma menor: ~1.2.3 é >=1.2.3 <1.3.0. ~1 equivale a 1.x.
x, X e * são curingas: 1.x é >=1.0.0 <2.0.0. Uma parte em falta conta como curinga, por isso 1.2 significa 1.2.x.
Um espaço significa E, || significa OU. Um intervalo com hífen 1.2.3 - 2.3.4 inclui ambos os extremos; um extremo superior parcial como - 2.3 significa abaixo de 2.4.0.
Os pré-lançamentos (1.3.0-beta.1) ficam excluídos, a menos que o próprio intervalo nomeie um pré-lançamento do mesmo major.minor.patch. É a regra que mais surpreende.
Lógica escrita segundo as regras do node-semver 7 usadas pelo npm (modo estrito, includePrerelease desativado) e verificada contra o pacote semver antes da publicação. As listas de versões vêm diretamente de registry.npmjs.org no seu navegador; nada é enviado à VersionDude.
Um intervalo flutua. A sua máquina de build não deve.
Um caret deixa a próxima instalação escolher uma versão mais recente; só o lockfile e a máquina que corre npm ci tornam os builds reprodutíveis. A Infomaniak, fornecedor suíço respeitador da privacidade, oferece VPS e servidores cloud para correr as suas próprias máquinas de build e integração contínua.