在 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 节点。

Open package manager from Solution Explorer

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

Install new npm package for esproj

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 包” 。

Install new npm package for Node.js

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

Screenshot of the Install New npm Packages dialog.

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

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

npm output

提示

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

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

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

Screenshot of the npm node in Solution Explorer showing the installation status of the npm packages.

包状态

  • Installed package - 已安装并列在 package.json 中
  • Extraneous package - 已安装但未显式列在 package.json 中
  • Missing package - 未安装但列在 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 版本,以实现与外部框架和库的最佳兼容性。