Vraag Hoe kan ik elke afhankelijkheid in package.json bijwerken naar de nieuwste versie?


Ik heb package.json gekopieerd van een ander project en wil nu alle afhankelijkheden naar hun nieuwste versies boren, omdat dit een nieuw project is en ik het niet erg vind om iets te repareren als het kapot gaat.

Wat is de gemakkelijkste manier om dit te doen?

De beste manier die ik nu weet, is rennen npm info express version update dan package.json handmatig voor elke. Er moet een betere manier zijn.

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

Ik ben nu een bijdrager NPM-check-updates, wat een geweldige oplossing is voor dit probleem.


1429
2018-04-18 02:39


oorsprong


antwoorden:


Lijkt op NPM-check-updates is de enige manier om dit nu te laten gebeuren.

npm i -g npm-check-updates
ncu -u
npm install

Op npm <3,11:

Verander eenvoudig de versie van elke afhankelijkheid in *, ren dan npm update --save. (Notitie:  gebroken in recente (3.11) versies van npm).

Voor:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

Na:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

Natuurlijk is dit de botte hamer van het bijwerken van afhankelijkheden. Het is prima als, zoals je al zei, het project leeg is en niets kan breken.

Aan de andere kant, als je in een meer volwassen project werkt, wil je waarschijnlijk eerst controleren of er geen breukveranderingen in je afhankelijkheden zijn voordat je gaat upgraden.

Om te zien welke modules zijn verouderd, gewoon uitvoeren npm outdated. Het zal alle geïnstalleerde afhankelijkheden weergeven die nieuwere versies beschikbaar hebben.


1689
2018-04-18 03:35



npm-check-updates is een hulpprogramma dat automatisch een package.json aanpast met de nieuwste versie van alle afhankelijkheden

zien https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

863
2018-04-03 21:53



TLDR; (bijgewerkt voor nieuwere NPM-versies)

Dingen zijn een beetje veranderd sinds deze antwoorden oorspronkelijk zijn geschreven.

npm 2+: npm outdated+npm update+npm shrinkwrap

Oudere npm: npm-check-updates pakket + npm shrinkwrap

Vergeet niet je deps in te pakken of je kunt eindigen met een dood project. Ik haalde een project uit de andere dag en het zou niet lopen omdat mijn deps allemaal verouderd waren / bijgewerkt / een puinhoop. Als ik was ingekrompen, zou npm precies hebben geïnstalleerd wat ik nodig had.


Details

Voor de nieuwsgierigen die het zo ver maken, hier is wat ik aanbeveel:

Gebruik npm-check-updates of npm outdated om de nieuwste versies te suggereren.

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

Voer vervolgens een schone installatie uit (zonder de rm kreeg ik afhankelijkheidswaarschuwingen)

$ rm -rf node_modules
$ npm install 

Sla tot slot exacte versies op npm-shrinkwrap.json met npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Nu, npm install zal nu exacte versies gebruiken in npm-shrinkwrap.json

Als je het controleert npm-shrinkwrap.json in git zullen alle installaties exact dezelfde versies gebruiken.

Dit is een manier om uit de ontwikkeling (alle updates, de hele tijd) over te gaan naar productie (niemand raakt niets aan).


294
2018-06-02 22:29



Updaten een afhankelijkheid van de nieuwste versie zonder het te openen package.json en verander het, je kunt rennen

npm install {package-name}@* {save flags?}

d.w.z.

npm install express@* --save

Als referentie, NPM-install


Zoals opgemerkt door gebruiker Vespakoen bij een afgewezen bewerking is het ook mogelijk om meerdere pakketten tegelijk op deze manier bij te werken:

npm install --save package-nave@* other-package@* whatever-thing@*

Hij plant ook een one-liner voor de shell op basis van npm outdated. Zien de bewerking voor code en uitleg.


PS: Ik heb ook een hekel aan het handmatig moeten bewerken package.json voor dingen als dat;)


155
2018-04-30 14:51



Als je toevallig gebruikt Visual Studio-code als uw IDE is dit een leuke kleine extensie om te updaten package.json een éénklik proces.

Versie Lense

enter image description here


50
2018-03-27 20:00



Dit werkt vanaf npm 1.3.15.

"dependencies": {
  "foo": "latest"
}

49
2018-01-21 22:35



  1. Gebruik * als de versie voor de nieuwste releases, inclusief onstabiel
  2. Gebruik latest als versiedefinitie voor de nieuwste stabiele versie
  3. Wijzig de package.json met exact het laatste stabiele versienummer met LatestStablePackages

Hier is een voorbeeld:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

38
2018-01-23 03:45



Het enige voorbehoud dat ik heb gevonden met het beste antwoord hierboven, is dat het de modules bijwerkt naar de nieuwste versie. Dit betekent dat het kan worden bijgewerkt naar een onstabiele alpha build.

Ik zou dat hulpmiddel van de npm-controle-updates gebruiken. Mijn groep gebruikte deze tool en het werkte effectief door de stabiele updates te installeren.

Zoals Etienne hierboven al zei: installeer en voer dit uit:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

34
2018-02-11 23:37