Uppdatera ett npm-paket utan att spräcka bygget

30 oktober 2026

NPM-logotypen i rött och vitt. En påminnelse om att köra `npm update package` för att hålla dina projekt uppdaterade.

Terminal visar hur npm uppdaterar paket. En uppdatering av npm-paketet är klar.

Du vill uppdatera ett enda paket utan att råka dra in en ny huvudversion som spräcker bygget. Kör npm update paketnamn i projektmappen, men kommandot håller sig normalt inom versionsintervallet som redan står i package.json.

Uppdatera inom projektets tillåtna versionsintervall

  • Ett paket: npm update paketnamn
  • Uppdatera versionsintervallet i package.json: lägg till --save.
  • Installera senaste publicerade versionen: använd npm install paketnamn@latest, men kontrollera om en ny huvudversion innebär ändringar i koden.
  • Granska ändringarna: kontrollera både package.json, package-lock.json och testresultatet.

Kommandot uppdaterar bara det versionsintervall som redan tillåts

Stå i projektets rotmapp, där package.json finns, och kör kommandot med paketets namn:

npm update lodash

För ett scoped paket, alltså ett paket med organisationsprefix, ser kommandot till exempel ut så här:

npm update @types/node

Jag tycker att den här skillnaden mellan att uppdatera ett paket och att byta dess versionsintervall är det som oftast avgör vilket kommando som passar. npm update väljer en tillgänglig version som uppfyller projektets befintliga versionskrav, så kommandot går inte automatiskt över till en ny huvudversion.

Tecknet i package.json avgör hur långt uppdateringen kan gå

En rad som "lodash": "^4.17.0" tillåter uppdateringar inom huvudversion 4, medan "lodash": "~4.17.0" begränsar intervallet till patchversioner på den angivna mindre versionen. Det följer reglerna för semantisk versionshantering, där huvudversionen normalt signalerar ändringar som kan bryta bakåtkompatibiliteten. npm:s dokumentation om semantisk versionshantering förklarar hur dessa intervall fungerar.

Exempelvis kan ^4.17.0 tillåta en senare version av version 4, men inte version 5. Om du vill gå över till den senaste versionen som publicerats under taggen latest, använd i stället:

npm install lodash@latest

Det kan ändra versionsintervallet i manifestet och därmed tillåta framtida uppdateringar från en ny huvudversion. För ett bibliotek med många anrop i koden skulle jag först kontrollera ändringsloggen och köra tester innan jag väljer den vägen.

package-lock.json kan ändras även när package.json står still

Det kan se märkligt ut när terminalen visar en ny version, men package.json är oförändrad. Det är normalt: npm update paketnamn uppdaterar vanligtvis den installerade versionen och låsfilen, medan manifestets versionsintervall lämnas som det var. Enligt npm:s dokumentation för update kan du lägga till --save om du också vill uppdatera versionsvärdet i package.json.

Det praktiska valet ser ut så här:

  • npm update paketnamn uppdaterar paketet inom nuvarande versionskrav.
  • npm update paketnamn --save uppdaterar paketet och skriver det uppdaterade versionsvärdet till manifestet.
  • npm install paketnamn@latest begär den version som registryts latest-tagg pekar på, vilket kan innebära ett större versionssteg.

Ändringar i låsfilen kan även beröra beroenden längre ned i paketträdet. Granska därför hela diffen, inte bara raden för paketet du ville uppdatera.

Felsignalen visar om du ska ändra kommando eller versionskrav

Om resultatet inte blev som du tänkt dig pekar det ofta på skillnaden mellan versionsintervallet, låsfilen och det paket som faktiskt installeras. Börja med att identifiera vilken fil som ändrades och vad du ville uppnå.

Situation Trolig förklaring Gör så här
package.json är oförändrad Standardläget uppdaterar normalt inte direkta beroendens versionsintervall där. Kör npm update paketnamn --save om intervallet också ska skrivas om.
Paketet stannar på äldre huvudversion Nuvarande semver-intervall tillåter inte den nya huvudversionen. Bedöm ändringarna och använd npm install paketnamn@latest om uppgraderingen är avsiktlig.
CI-installationen misslyckas efter uppdateringen Låsfilen och manifestet kan vara osynkroniserade, eller så kan en ändring i beroendeträdet påverka bygget. Granska diffen och kör projektets tester; kontrollera sedan installationen med npm ci.

npm ci är avsett för rena, reproducerbara installationer och stoppar om låsfilen inte stämmer med manifestet. Kommandot installerar hela projektet, så det ersätter inte kommandot för att uppdatera ett enskilt paket. npm:s dokumentation om ci beskriver begränsningen och hur låsfilen valideras.

Välj update för säkra steg och install för ett versionsbyte

När målet är att få en nyare version inom projektets redan godkända intervall är npm update paketnamn det raka valet. När du uttryckligen vill byta till den senaste versionen, även om en ny huvudversion kan ingå, välj npm install paketnamn@latest och räkna med att granska ändringar i koden.

Efter kommandot kontrollerar du package.json, package-lock.json och testresultatet innan ändringen går vidare till teamet eller driftsättning. Då är det lättare att upptäcka om en uppdatering av ett enda paket också har flyttat på andra delar av beroendeträdet.

Vanliga frågor

Stå i projektets rotmapp och kör npm update paketnamn, till exempel npm update lodash. Kommandot uppdaterar inom versionsintervallet som redan anges i package.json, så det går normalt inte över till en ny huvudversion.
npm update paketnamn uppdaterar vanligtvis den installerade versionen och låsfilen, men lämnar versionsintervallet i package.json oförändrat. Granska hela låsfilens diff eftersom även beroenden längre ned i paketträdet kan ha ändrats.
Använd npm install paketnamn@latest när du avsiktligt vill installera versionen som registryts latest-tagg pekar på, även om det innebär en ny huvudversion. Kontrollera ändringsloggen och kör tester, eftersom uppgraderingen kan kräva ändringar i koden.
^4.17.0 tillåter senare versioner inom huvudversion 4, men inte version 5. ~4.17.0 begränsar uppdateringen till patchversioner på den angivna mindre versionen. Lägg till --save i npm update paketnamn --save om det uppdaterade versionsvärdet också ska skrivas till package.json.
Betygsätt artikeln

Genomsnitt: 0.0 / 5 · 0 betyg

Taggar

npm node.js semantisk versionering beroenden
Kommentarer (0)
Lägg till en kommentar