c# - ASP.NET Core 3.1 与 npm 的集成
问题描述
我正在开发一个 ASP.NET Core 3.1 应用程序并决定使用 npm 来管理前端库,现在它们应该很少,但将来可能会改变。
我见过几个类似的问题,但它们似乎都有些过时了:
如何在 Visual Studio 2017 中使用 NPM 并安装包?
我打算使用 npm 在 CI 环境中安装所需的库,我记得能够将 npm 命令集成到这些库中dotnet
,并且想知道它是否可能/是否值得推荐。
在这个较新版本的 ASP.NET Core 中使用 npm 的推荐方法是什么?
解决方案
我建议使用Yarn有两个原因:
- 对于您的用例,它是 npm 的替代品。
- 现有的 Nuget 包Yarn.MSBuild将 Yarn 集成到 MSBuild 中。
Yarn.MSBuild 允许您在.csproj
. 这些命令在您构建项目时运行。例如,要在构建时安装前端包:
在您的 : 添加对 Yarn.MSBuild 的引用
.csproj
:<ItemGroup> <PackageReference Include="Yarn.MSBuild" Version="*" /> </ItemGroup>
添加
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>
推荐阅读
- azure - 构建代理不断失败并出现错误 ERR:证书链中的自签名证书
- c++ - 用于访问结构数据成员的 AST 节点
- java - JavaFX MVC 包间通信
- amazon-web-services - 在 Lambda 上运行 Prometheus
- javascript - Vue 在使用 v-for 时无法读取 null 的属性
- firebase - Firestore 规则:执行 setData 时出错,PERMISSION_DENIED
- bash - 如何对包含 shellscript 中特定字符的变量中设置的文件名进行 cp / mv 或命令?
- django - fileField 是否可以在 django 中保存 url
- ssl - 如何在 Amazon EC2 中安装 GoDaddy SSL 证书
- python - 尝试抓取 ASP 网页时出现 HTTPError 500