首页 > 解决方案 > ASP.NET Core 3.1 与 npm 的集成

问题描述

我正在开发一个 ASP.NET Core 3.1 应用程序并决定使用 npm 来管理前端库,现在它们应该很少,但将来可能会改变。

我见过几个类似的问题,但它们似乎都有些过时了:

如何在 Visual Studio 2017 中使用 NPM 并安装包?

如何在 ASP.NET Core 中使用 npm

我打算使用 npm 在 CI 环境中安装所需的库,我记得能够将 npm 命令集成到这些库中dotnet,并且想知道它是否可能/是否值得推荐。

在这个较新版本的 ASP.NET Core 中使用 npm 的推荐方法是什么?

标签: c#asp.netasp.net-corenpm

解决方案


我建议使用Yarn有两个原因:

  • 对于您的用例,它是 npm 的替代品。
  • 现有的 Nuget 包Yarn.MSBuild将 Yarn 集成到 MSBuild 中。

Yarn.MSBuild 允许.csproj. 这些命令在您构建项目时运行。例如,要在构建时安装前端包:

  1. 在您的 : 添加对 Yarn.MSBuild 的引用.csproj

    <ItemGroup>
      <PackageReference Include="Yarn.MSBuild" Version="*" />
    </ItemGroup>
    
  2. 添加YarnBuildCommand属性:

    <PropertyGroup>
      <YarnBuildCommand Condition="'$(Configuration)' == 'Release'">install</YarnBuildCommand>
    </PropertyGroup>
    

在上面的示例中,yarn install当您在发布配置中构建项目时运行。您特别询问了有关使用 CI 构建的问题dotnet- 使用此设置,当您dotnet build -c Release在 CI 中运行时,您的前端包已安装。

请注意,默认情况下,该命令在您.csproj的目录中执行。您可以通过添加YarnWorkingDir属性来更改它:

<PropertyGroup>
  <YarnWorkingDir>$(MSBuildProjectDirectory)/wwwroot/</YarnWorkingDir>
</PropertyGroup>

推荐阅读