Ce face Versiuni semver (^, ~, >=)
Pachetele npm folosesc versionarea semantică (semver): MAJOR.MINOR.PATCH. PATCH crește la corecturi, MINOR la funcții noi compatibile, MAJOR la schimbări care pot strica codul celor care folosesc pachetul. Versiunile cu -beta.0, -rc.1 sunt versiuni de test.
În package.json nu scrii de obicei o versiune exactă, ci un interval: ce versiuni accepți la instalare și la npm update. npm install scrie implicit intervalul cu ^.
| Interval | Acceptă | Exemplu |
|---|---|---|
1.2.3 |
Doar versiunea exactă | 1.2.3 |
^1.2.3 |
Aceeași versiune majoră | >=1.2.3 <2.0.0 |
~1.2.3 |
Aceeași versiune minoră | >=1.2.3 <1.3.0 |
^0.2.3 |
Sub 1.0, ^ blochează minora |
>=0.2.3 <0.3.0 |
1.x sau 1 |
Orice 1.*.* | >=1.0.0 <2.0.0 |
>=1.2.0 <2.0.0 |
Interval explicit | 1.2.0 … 1.99.99 |
* sau latest |
Orice versiune (de evitat) |
Exemple
Exemplul 1: Ce versiuni acceptă ^ și ~
Pachetul semver (același pe care îl folosește npm intern) primește un interval cu -r și o listă de versiuni și le afișează doar pe cele acceptate.
npx --yes semver -r "^1.2.0" 1.1.9 1.2.0 1.2.7 1.9.0 2.0.0
npx --yes semver -r "~1.2.0" 1.2.0 1.2.7 1.3.0
Ieșire în terminal
1.2.0
1.2.7
1.9.0
1.2.0
1.2.7
Exemplul 2: Versiuni 0.x, intervale explicite și x
Sub 1.0.0, ^0.2.3 nu acceptă 0.3.0: la pachetele încă instabile orice minoră nouă poate aduce schimbări incompatibile.
npx --yes semver -r "^0.2.3" 0.2.3 0.2.9 0.3.0
npx --yes semver -r ">=1.2.0 <2.0.0" 1.1.0 1.5.0 2.0.0
npx --yes semver -r "1.x" 1.0.0 1.9.9 2.0.0
Ieșire în terminal
0.2.3
0.2.9
1.5.0
1.0.0
1.9.9
Exemplul 3: Următoarea versiune
Ce ar face npm version minor pe un proiect la 1.4.2.
npx --yes semver -i minor 1.4.2
Ieșire în terminal
1.5.0
Greșeli frecvente
- Crezi că
^1.2.3instalează fix 1.2.3: instalează cea mai nouă 1.x disponibilă. Versiunea exactă instalată o fixeazăpackage-lock.json. - Folosești
*saulatestca interval: o versiune majoră nouă intră în proiect fără să observi. - Te aștepți ca
^0.2.3să accepte0.3.0, ca la versiunile 1.x: pentru 0.x,^se comportă ca~.
Comenzi înrudite
npm install: Instalează pachete din registrul npm în node_modules și le trece în package.json și package-lock.json.npm update / npm outdated: npm outdated arată pachetele rămase în urmă; npm update le aduce la cea mai nouă versiune permisă de intervalul din package.json.npm version: Crește versiunea din package.json după regulile semver și, într-un depozit Git, face commit și etichetă vX.Y.Z.package-lock.json: Fișierul în care npm notează versiunea exactă a fiecărui pachet instalat, ca toată lumea să primească același node_modules.package.json: Fișierul de configurare al unui proiect Node.js: nume, versiune, tipul modulelor, scripturi, dependențe și versiunea Node cerută.