ncu -u 命令到底有什么作用?

Ant*_*tWo 7 npm angular

我一直在尝试将 Visual Studio 中的 Angular 项目更新为特定版本的 Angular。

我正在遵循本教程,并且做了一些不同的事情,因为通过本教程,我获得了现有的最新 Angular 版本,并且我特别想要 Angular 的版本 6。

为此,我运行了npm install -g @angular/cli@6.2.9而不是教程一 ( npm install -g npm-check-updates)

无论如何,我运行ncu -u命令后,就像教程一样。

最后我得到了版本 7 的 package.json,这不是我想要的。

我知道这ncu意味着npm-check-updates,并且熟悉-g它正在全球安装。到底是ncu -u做什么的,是更新吗?

那么它会忽略我的 6 版本并继续使用最后一个版本吗?

我应该在这里做什么?我想查看我的包 json 的更改,但针对 6 而不是 7,但此命令针对 7 执行此操作。

就像教程中的图像一样,您可以在命令行/PowerShell 中看到之前和之后的情况(正如教程所述,我在管理中使用了 PowerShell)。

我尝试使用这个 https://update.angular.io/

这仍然引导我使用版本 7...而不是我在下拉列表中选择的 6.1。看图片

在此输入图像描述

现在是我的 package.json 在此输入图像描述

Art*_*tiy 11

正如 ncu 包描述中所述

ncu -u将 package.json 依赖项升级到最新版本,忽略指定版本。

npm-check-updates 维护您现有的语义版本控制策略,即将 "express": "^4.0.0" 升级为 "express": "^5.0.0"。

它仅修改您的 package.json 文件。运行 npm install 来更新已安装的软件包和 package-lock.json。

运行 ncu -u 后,您可能会收到另一个错误,如下所示:

项目依赖树可能有问题。这可能不是 Create React App 中的错误,而是您需要在本地修复的问题。

Create React App 提供的react-scripts 包需要依赖:

“babel-eslint”:“10.0.1”

不要尝试手动安装它:您的包管理器会自动安装。然而,在树的更高层检测到了不同版本的 babel-eslint:

..ClientApp\node_modules\babel-eslint(版本:10.0.2)

对于初学者来说,node.js 中的依赖地狱是相当令人困惑的事情,当修复一个错误时,你会得到另一个错误,然后又出现另一个错误,等等。

但是,当您开始仔细阅读每个错误和提示时,您很快就会知道问题是什么以及如何解决它。

所以执行后报错

ncu -u 
Run Code Online (Sandbox Code Playgroud)

说明依赖关系问题,即您的 package.json 现在包含最新版本,而某些包可能还依赖于某些包,但不依赖于最新版本。

例如最新版本的react-scripts包(目前@3.0.1依赖于@10.0.1的babel-eslint)

但目前最新的 babel-eslint 已经是@10.0.2。

ncu -u 命令将最新的 babel-eslint@10.0.2 放入 package.json 文件中。

要解决此问题,您需要按照完整错误文本(较长)中提到的步骤进行操作,或者手动将 babel-eslint 版本降级到“10.0.1”。

 npm i babel-eslint@10.0.1
Run Code Online (Sandbox Code Playgroud)

您可能会发现列出引用冲突包的其他包很有用

npm ls [conflicting_package]

npm ls babel-eslint

+-- babel-eslint@10.0.2     - explicit dependency in your package.json on babel-eslint.
`-- react-scripts@3.0.1     - explicit dependency in your package.json on react-scripts.   
  `-- babel-eslint@10.0.1   - implicit dependency with different version
Run Code Online (Sandbox Code Playgroud)