使用npm-check-updates更新package.json和bower.json中的软件包教程 | ncu命令在nodejs中的应用

691 阅读3分钟

在这篇博文中,我们将学习npm-check-updates npm包来更新package.json和bower.json中的依赖项。

npm check updates包用于检查node js项目package.json中的所有依赖项,并将依赖项更新为最新版本。这个包通过更新以下配置文件来工作

这个库解决了NodeJS应用程序的以下所有问题

  • 如何将package.json中的所有依赖项更新到最新版本?
  • 如何将package.json中的devDependencies更新到最新版本?
  • 将bower.json中的依赖关系更新到最新版本
  • npm检查并更新软件包,如果需要的话

node 和 命令应该在安装npm-check-updates`之前就可以工作。找到已安装的node和npm版本,检查是否已安装npm

B:\cloudhadoop>node --version
v14.17.0

B:\cloudhadoop>npm --version
7.11.1

请使用npm install命令全局安装npm-check-updates。

npm i -g npm-check-updates  

一旦安装,ncu 命令就可用了。

B:\cloudhadoop>ncu --version  
2.14.1  

要更新任何软件包到最新版本,首先,你需要检查过时的旧版本。请发出npm outdated 命令。

下面的例子是检查angular package.json中过期的依赖项。

B:\Workspace\blog\angularapp>npm outdated  
Package                        Current  Wanted   Latest  Location  
@angular-devkit/build-angular    0.7.5   0.7.5    0.8.5  angularapp  
@angular/cli                     6.1.5   6.1.5    6.2.5  angularapp  
@types/node                      8.9.5   8.9.5  10.12.0  angularapp  
codelyzer                        4.2.1   4.2.1    4.5.0  angularapp  
jasmine-core                    2.99.1  2.99.1    3.2.1  angularapp  
karma                            1.7.1   1.7.1    3.0.0  angularapp  
karma-jasmine-html-reporter      0.2.2   0.2.2    1.3.1  angularapp  
protractor                       5.3.2   5.3.2    5.4.1  angularapp  
ts-node                          5.0.1   5.0.1    7.0.1  angularapp  
tslint                           5.9.1   5.9.1   5.11.0  angularapp  
typescript                       2.7.2   2.7.2    3.1.3  angularapp  

同样可以用npm命令来实现

这列出了当前版本和直接依赖的版本。

B:\myblogs\cloudhadoop>npm list webpack
cloudhadoop@1.0.0 B:\myblogs\cloudhadoop
+-- babel-loader@8.1.0
| `-- webpack@4.42.1 deduped
+-- compression-webpack-plugin@3.1.0
| `-- webpack@4.42.1 deduped
+-- webpack@4.42.1
| `-- terser-webpack-plugin@1.4.5
|   `-- webpack@4.42.1 deduped
`-- workbox-webpack-plugin@5.1.2
  `-- webpack@4.42.1 deduped

如何检查依赖关系并更新到最新版本?

使用ncu ,你可以列出所有包的当前版本和最新版本的package.json

B:\Workspace\blog\angularapp>ncu  
Using B:\Workspace\blog\angularapp\package.json  
[..................] \ :  
 @angular-devkit/build-angular   ~0.7.0  →    ~0.8.5  
 @angular/cli                    ~6.1.1  →    ~6.2.5  
 @types/node                     ~8.9.4  →  ~10.12.0  
 codelyzer                       ~4.2.1  →    ~4.5.0  
 jasmine-core                   ~2.99.1  →    ~3.2.1  
 karma                           ~1.7.1  →    ~3.0.0  
 karma-jasmine-html-reporter     ^0.2.2  →    ^1.3.1  
 protractor                      ~5.3.0  →    ~5.4.1  
 ts-node                         ~5.0.1  →    ~7.0.1  
 tslint                          ~5.9.1  →   ~5.11.0  
 typescript                      ~2.7.2  →    ~3.1.3  
  
Run ncu with -u to upgrade package.json  

这只是在控制台中显示版本,并没有更新到package.json。接下来,将package.json中的每个依赖关系更新为最新版本

这里有一个单一的命令来更新所有软件包的当前版本到最新版本。

B:\Workspace\blog\angularapp>ncu -u  
Using B:\Workspace\blog\angularapp\package.json  
[..................] \ :  
 @angular-devkit/build-angular   ~0.7.0  →    ~0.8.5  
 @angular/cli                    ~6.1.1  →    ~6.2.5  
 @types/node                     ~8.9.4  →  ~10.12.0  
 codelyzer                       ~4.2.1  →    ~4.5.0  
 jasmine-core                   ~2.99.1  →    ~3.2.1  
 karma                           ~1.7.1  →    ~3.0.0  
 karma-jasmine-html-reporter     ^0.2.2  →    ^1.3.1  
 protractor                      ~5.3.0  →    ~5.4.1  
 ts-node                         ~5.0.1  →    ~7.0.1  
 tslint                          ~5.9.1  →   ~5.11.0  
 typescript                      ~2.7.2  →    ~3.1.3  
  
Upgraded B:\Workspace\blog\angularapp\package.json  

这将更新依赖的版本到package.json中的最新版本。这里是更新的package.json文件

{  
  "name": "angularapp",  
  "version": "0.0.0",  
  "scripts": {  
    "ng": "ng",  
    "start": "ng serve",  
    "build": "ng build",  
    "test": "ng test",  
    "lint": "ng lint",  
    "e2e": "ng e2e"  
  },  
  "private": true,  
  "dependencies": {  
    "@angular/animations": "^6.1.0",  
    "@angular/common": "^6.1.0",  
    "@angular/compiler": "^6.1.0",  
    "@angular/core": "^6.1.0",  
    "@angular/forms": "^6.1.0",  
    "@angular/http": "^6.1.0",  
    "@angular/platform-browser": "^6.1.0",  
    "@angular/platform-browser-dynamic": "^6.1.0",  
    "@angular/router": "^6.1.0",  
    "angular2-uuid": "^1.1.1",  
    "core-js": "^2.5.4",  
    "rxjs": "^6.0.0",  
    "zone.js": "~0.8.26"  
  },  
  "devDependencies": {  
    "@angular-devkit/build-angular": "~0.8.5",  
    "@angular/cli": "~6.2.5",  
    "@angular/compiler-cli": "^6.1.0",  
    "@angular/language-service": "^6.1.0",  
    "@types/jasmine": "~2.8.6",  
    "@types/jasminewd2": "~2.0.3",  
    "@types/node": "~10.12.0",  
    "codelyzer": "~4.5.0",  
    "jasmine-core": "~3.2.1",  
    "jasmine-spec-reporter": "~4.2.1",  
    "karma": "~3.0.0",  
    "karma-chrome-launcher": "~2.2.0",  
    "karma-coverage-istanbul-reporter": "~2.0.0",  
    "karma-jasmine": "~1.1.1",  
    "karma-jasmine-html-reporter": "^1.3.1",  
    "protractor": "~5.4.1",  
    "ts-node": "~7.0.1",  
    "tslint": "~5.11.0",  
    "typescript": "~3.1.3"  
  }  
}  

如何用npm命令将每个软件包更新到最新版本?

npm命令提供了一个单一的软件包到最新的版本

npm update --save  @angular/cli

下面运行并更新package.json中的所有软件包

像package.json包的更新一样,我们可以使用带有选项的ncu命令。

npm update和npm-check-updates命令的区别?

npm-check-update检查package.json中的旧版本并更新到最新版本,接下来你必须使用npm install 命令安装最新的包。

npm update命令更新软件包中的最新版本+安装软件包