Indholdsfortegnelse
Opdater selve npm
For at opdatere selve npm:
1 |
sudo npm install -g npm@next |
Få vist npm’s version:
1 |
npm -version |
npm outdated
Vis pakker der er forældet, dvs. udkommet i nyere versioner:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$ npm outdated Package Current Wanted Latest Location @angular-devkit/build-angular 0.6.8 0.6.8 0.8.3 my-app @angular/animations 6.1.3 6.1.9 6.1.9 my-app @angular/cdk 6.4.6 6.4.7 6.4.7 my-app @angular/cli 6.0.8 6.0.8 6.2.3 my-app @angular/common 6.1.3 6.1.9 6.1.9 my-app @angular/compiler 6.1.1 6.1.9 6.1.9 my-app @angular/compiler-cli 6.1.1 6.1.9 6.1.9 my-app @angular/core 6.1.3 6.1.9 6.1.9 my-app @angular/forms 6.1.3 6.1.9 6.1.9 my-app @angular/http 6.1.3 6.1.9 6.1.9 my-app @angular/language-service 6.1.3 6.1.9 6.1.9 my-app @angular/platform-browser 6.1.3 6.1.9 6.1.9 my-app @angular/platform-browser-dynamic 6.1.3 6.1.9 6.1.9 my-app @angular/pwa 0.6.8 0.6.8 0.8.3 my-app @angular/router 6.1.3 6.1.9 6.1.9 my-app @angular/service-worker 6.1.3 6.1.9 6.1.9 my-app @ng-bootstrap/ng-bootstrap 2.2.2 2.2.2 3.2.2 my-app @ng-select/ng-select 2.5.0 2.9.1 2.9.1 my-app @types/node 10.5.8 10.11.0 10.11.0 my-app jasmine-core 3.1.0 3.1.0 3.2.1 my-app karma 2.0.5 2.0.5 3.0.0 my-app karma-coverage-istanbul-reporter 2.0.1 2.0.4 2.0.4 my-app ng-sidebar 7.3.0 7.3.0 8.0.0 my-app protractor 5.4.0 5.4.1 5.4.1 my-app rxjs 6.2.2 6.3.3 6.3.3 my-app typescript 2.9.2 2.9.2 3.0.3 my-app |
Current
Den version der pt. er installeret
Wanted
Den version der bør installeres iht. reglerne (semver) i package.json
Latest
Den senest tilgængelige version
Opdater iht. semver
Hvis du blot vil opdatere iht. reglerne specificeret i package.json:
1 |
$ npm update |
Hvis du på et tidspunkt ønsker at udelade specifikke pakker fra din opdatering, skal du sætte dig lidt ind i hvordan opdateringen fortolker værdien ud for “version” i package.json
latest
– Hent den absolut nyeste version af denne pakke1
– Hent seneste 1.x.x1.2
– Hent seneste 1.2.x^1.2.3
– Hent seneste 1.x.x og som minimum 1.2.3~1.2.3
– Hent seneste 1.2.x og som minimum 1.2.3
1 |
"typescript": "~3.8.3" |
eller
1 |
"typescript": "3.8" |
Opdater til nyeste versioner
Hvis det er nyt for dig at udvikle et projekt med Angular, er du måske lidt forsigtig med at opdatere til nyeste versioner. Især hvis nogen af pakkerne har en ny major version. Men jeg har nu gjort det flere gange uden nogen problemer. Kun een gang var der en fejl, og den kunne jeg nemt google mig til løsningen af. Det er i min optik helt klart bedst at benytte de nyeste version og sørge for jævnligt at opdatere.
Hvis du ønsker at opdatere til nyeste version af alle pakker:
npm-check-updates
Dette værktøj opdaterer versionerne i package.json til de nyest tilgængelige. Herefter kan vi så bruge npm install
til at installerer alle de nye versioner.
Hvis du ikke har npm-check-updates
, kan du installerer den som følger:
1 |
$ sudo npm install -g npm-check-updates |
… og herefter kører den:
1 |
$ ncu --upgradeAll |
eller den forkortede udgave:
1 |
$ ncu -a |
Eksempel på output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Using /home/me/myApp/package.json [..................] \ : @angular/pwa ^0.6.8 → ^0.8.3 @ng-bootstrap/ng-bootstrap ^2.2.2 → ^3.2.2 ng-sidebar ^7.3.0 → ^8.0.0 @angular-devkit/build-angular ~0.6.8 → ~0.8.3 @angular/cli ~6.0.8 → ~6.2.3 jasmine-core ~3.1.0 → ~3.2.1 karma ~2.0.5 → ~3.0.0 typescript ^2.9.2 → ^3.0.3 @angular/animations ^6.1.3 → ^6.1.9 @angular/cdk ^6.4.6 → ^6.4.7 @angular/common ^6.1.3 → ^6.1.9 @angular/compiler ^6.1.1 → ^6.1.9 @angular/core ^6.1.3 → ^6.1.9 @angular/forms ^6.1.3 → ^6.1.9 @angular/http ^6.1.3 → ^6.1.9 @angular/platform-browser ^6.1.3 → ^6.1.9 @angular/platform-browser-dynamic ^6.1.3 → ^6.1.9 @angular/router ^6.1.3 → ^6.1.9 @angular/service-worker ^6.1.3 → ^6.1.9 @ng-select/ng-select ^2.5.0 → ^2.9.1 rxjs ^6.2.2 → ^6.3.3 @angular/compiler-cli ^6.1.1 → ^6.1.9 @angular/language-service ^6.1.3 → ^6.1.9 @types/node ^10.5.8 → ^10.11.0 karma-coverage-istanbul-reporter ~2.0.1 → ~2.0.4 protractor ~5.4.0 → ~5.4.1 |
npm install
Nu kan vi installere de nye versioner:
1 |
$ npm install |
Kort og godt
Nu kan du fremover opdatere pakkerne i dit projekt i een simpel arbejdsgang
1 |
$ ncu --updateAll && npm install |
eller blot:
1 |
$ ncu -a && npm i |
Output fra kommandoen npm outdated
burde nu være helt tom.
Byg dit projekt og tjek at alt virker som vanligt. Læs release notes på de pakker der er opdateret til ny major version.
Fejlhåndtering
Nedgradering af pakke
I mit Angular 6 projekt fik jeg denne fejl efter opdatering:
1 |
ERROR in The Angular Compiler requires TypeScript >=2.7.2 and <2.10.0 but 3.0.3 was found instead |
Det ovenstående meddelelse fortæller er, at min nuværende version af Angular kun understøtter version 2.7.2 til 2.9-* af Typescript. Og det viser sig da også at support for Typescript 3, først kommer i Angular 7.
Jeg skal derfor nedgradere Typescript. Det er meget simpelt… jeg installerer blot den version jeg ønsker, og --save
parameteren sørger for at ændre versionen i package.json
1 |
$ npm install --save typescript@2.9.2 |
Pakke med sårbarheder
Efter en opdatering fik jeg denne besked:
1 |
found 1 high severity vulnerability |
Kør en audit for at få mere information:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$npm audit # Run npm install --save-dev @angular-devkit/build-angular@0.13.0 to resolve 1 vulnerability ┌───────────────┬───────────────────────────────────────────────────────┐ │ High │ Missing Origin Validation │ ├───────────────┼───────────────────────────────────────────────────────┤ │ Package │ webpack-dev-server │ ├───────────────┼───────────────────────────────────────────────────────┤ │ Dependency of │ @angular-devkit/build-angular [dev] │ ├───────────────┼───────────────────────────────────────────────────────┤ │ Path │ @angular-devkit/build-angular > webpack-dev-server │ ├───────────────┼───────────────────────────────────────────────────────┤ │ More info │ https://npmjs.com/advisories/725 │ └───────────────┴───────────────────────────────────────────────────────┘ |
Løsningen skulle være at installere en nyere version af build-angular, men hvorfor havde jeg ikke den? Jeg havde jo lige opdateret det hele. Men npm update
opdaterer kun iht. reglerne i package.json. Jeg havde ikke benyttet ncu
som jeg plejer.
Særlig vedr Angular projekter
Først og fremmest går du til Angular Update Guide og angiver hvilken version du opdaterer fra og til.
Herefter får du udførlige instrukser i hvad du skal gøre og være opmærksom på før, under og efter opdateringen.