在 Visual Studio 中管理 npm 包

可以使用 npm 来安装和管理要在 Node.js 和 ASP.NET Core 应用程序中使用的包。 使用 Visual Studio 可轻松地通过 UI 或直接与 npm 交互并发出 npm 命令。 如果不熟悉 npm 并想要详细了解,请转到 npm 文档

Visual Studio 与 npm 的集成因项目类型而异。

重要

npm 在项目根目录中需要 node_modules 文件夹和 package.json 。 如果应用的文件夹结构不同,并且希望使用 Visual Studio 来管理 npm 包,则可以修改文件夹结构。

基于 CLI 的项目 (.esproj)

从 Visual Studio 2022 开始,npm 包管理器可用于基于 CLI 的项目,因此现在可以采用为 ASP.NET Core 项目下载 NuGet 包的方式下载 npm 模块。 然后可以使用 package.json 来修改和删除包。

若要打开包管理器,请在“解决方案资源管理器”中右键单击项目中的 npm 节点,然后选择添加 npm 包

从解决方案资源管理器中打开包管理器

接下来可以搜索 npm 包,选择一个包,然后选择“安装包”进行安装。

为 esproj 安装新的 npm 包

Node.js 项目

对于 Node.js 项目 (.njsproj),可以执行下列任务:

这些功能协同工作,并与项目系统和项目中的 package.json 文件同步。

先决条件

需要安装“Node.js 开发”工作负载和 Node.js 运行时,以便将 npm 支持添加到项目 。 有关详细步骤,请参阅创建 Node.js 和 Express 应用

注意

对于现有的 Node.js 项目,请使用“基于现有 Node.js 代码”解决方案模板或 Open folder (Node.js) 项目类型来在项目中启用 npm 。

从解决方案资源管理器安装包 (Node.js)

对于 Node.js 项目,安装 npm 包的最简单方法是通过 npm 包安装窗口。 若要访问此窗口,右键单击项目中的“npm”节点并选择“安装新的 npm 包” 。

为 Node.js 安装新的 npm 包

在此窗口中可以搜索包、指定选项并安装。

“安装新 npm 包”对话框的屏幕截图。

  • 依赖项类型 - 在“标准”、“开发”和“可选”包间进行选择 。 “标准”指定包是一个运行时依赖项,而“开发”指定只在开发过程中需要包。
  • 添加到 package.json - 建议。 此可配置选项已被弃用。
  • 所选版本 - 选择你想要安装的包版本。
  • 其他 npm 参数 - 指定其他标准参数。 例如,可以输入版本值(如 @~0.8),安装版本列表中不可用的特定版本。

可以在“输出”窗口的 npm 输出中查看安装进度(若要打开此窗口,请依次选择“视图”>“输出”,或按 Ctrl + Alt + O)。 这可能需要一些时间。

npm 输出

提示

可以在搜索查询前添加感兴趣的范围,进而搜索范围内的包,例如键入 @types/mocha 来查找 mocha 的 TypeScript 定义文件。 此外,安装 TypeScript 的类型定义时,可以通过在 npm 参数字段中指定版本(如 @ts2.6)来指定要面向的 TypeScript 版本。

在解决方案资源管理器中管理安装的包 (Node.js)

npm 包显示在解决方案资源管理器中。 “npm”节点下的条目模拟 package.json 文件中的依赖项 。

解决方案资源管理器中 npm 节点的屏幕截图,其中显示 npm 包的安装状态。

包状态

  • 已安装的包 - 已安装并列在 package.json 中
  • 无关包 - 已安装但未显式列在 package.json 中
  • 缺失的包 - 未安装但列在 package.json 中

右键单击 npm 节点,执行以下操作之一 :

  • 安装新的 npm 包 打开 UI 以安装新的包。
  • 安装 npm 包 运行 npm 安装命令以安装 package.json 中列出的所有包 。 (运行 npm install。)
  • “更新 npm 包”根据 package.json 中指定的语义版本控制 (SemVer) 范围,将包更新到最新版本。 (运行 npm update --save。)。 通常使用“~”或“^”指定 SemVer 范围。 有关详细信息,请参阅 package.json 配置

右键单击包节点,执行以下操作之一:

  • 安装 npm 包 运行 npm 安装命令以安装 package.json 中列出的所有包版本 。 (运行 npm install。)
  • “更新 npm 包”根据 package.json 中指定的 SemVer 范围,将包更新到最新版本。 (运行 npm update --save。)通常使用“~”或“^”指定 SemVer 范围。
  • 卸载 npm 包 卸载包并将其从 package.json 中删除(运行 npm uninstall --save。)

注意

若要帮助解决 npm 包的问题,请参阅疑难解答

在 Node.js 交互式窗口中使用 .npm 命令 (Node.js)

还可在 Node.js 交互式窗口中使用 .npm 命令来执行 npm 命令。 若要打开此窗口,请在“解决方案资源管理器”中右键单击项目,然后选择“打开 Node.js 交互窗口”(或按 Ctrl + K、N)。

在窗口中,可以使用如下命令来安装包:

.npm install azure@4.2.3

提示

默认情况下,npm 将在项目的主目录中执行。 如果解决方案中有多个项目,请在方括号中指定项目的名称或路径。 .npm [MyProjectNameOrPath] install azure@4.2.3

提示

如果项目不包含 package.json 文件,请使用 .npm init -y 创建含默认条目的新 package.json 文件。

ASP.NET Core 项目

对于 ASP.NET Core 项目之类的项目,可以在项目中添加 npm 支持,并使用 npm 安装包。

注意

对于 ASP.NET Core 项目,还可以使用库管理器或 yarn(而非 npm)来安装客户端 JavaScript 和 CSS 文件。 如果需要与 MSBuild 集成或 dotnet CLI 进行包管理(npm 不会提供),则可能需要以下选项之一。

如果你的项目尚未包含 package.json 文件,则可以为其添加一个 package.json 文件以启用 npm 支持 。

  1. 若要添加 package.json 文件,请在“解决方案资源管理器”中右键单击项目,然后依次选择“添加”>“新项”(或按 Ctrl + Shift + A)。 使用搜索框查找 npm 文件,选择“npm 配置文件”,使用默认名称,然后单击“添加”。

  2. 在 package.json 的 dependenciesdevDependencies 部分中添加一个或多个 npm 包 。 例如,可以向文件添加以下内容:

    "devDependencies": {
       "gulp": "4.0.2",
       "@types/jquery": "3.5.29"
    }
    

    保存文件时,Visual Studio 会将包添加到解决方案资源管理器中的“依赖项/npm”节点下 。 如果未显示该节点,请右键单击“package.json”并选择“还原包” 。 要查看包安装状态,请在“输出”窗口中选择“npm”输出

    可以使用 package.json 配置 npm 包。 直接打开 package.json 或右键单击解决方案资源管理器中的 npm 节点,并选择“打开 package.json”。

npm 包疑难解答

  • 如果在生成应用或转译 TypeScript 代码时看到任何错误,请检查 npm 包是否由于潜在错误源而不兼容。 若要帮助识别错误,请在安装包时检查“npm 输出”窗口,如本文前面所述。 例如,如果一个或多个 npm 包版本已被弃用,并导致发生错误,则可能需要安装较新版本以修复错误。 有关使用 package.json 控制 npm 包版本的信息,请参阅 package.json 配置

  • 在某些 ASP.NET Core 方案中,由于此处所述的已知问题,解决方案资源管理器可能无法正确显示已安装的 npm 包的状态。 例如包在安装后可能会显示为未安装。 在大多数情况下,可以通过删除 package.json,重启 Visual Studio 并重新添加 package.json 文件来更新解决方案资源管理器,如本文前面所述 。 也可在安装包时使用“npm 输出”窗口来验证安装状态。

  • 在某些 ASP.NET Core 方案中,在生成项目后,解决方案资源管理器中的 npm 节点可能不可见。 若要使节点再次可见,请右键单击项目节点,然后选择“卸载项目”。然后右键单击项目节点,并选择“重新加载项目”。

  • 对于 Node.js 项目,必须为 npm 支持安装“Node.js 开发”工作负载 。 npm 需要 Node.js。 如果你尚未安装 Node.js,建议从 Node.js 网站安装 LTS 版本,以实现与外部框架和库的最佳兼容性。