【发布时间】:2020-01-01 04:47:27
【问题描述】:
我正在构建一个以 ASP.NET Core Web API 作为后端,以 React SPA 作为前端的项目,文件夹结构如下所示:
WebApiProject
│
├── ClientApp/
│ ├── public/
│ ├── src/
│ └── package.json
│
├── Controller/
├── Models/
├── appsettings.json
├── Program.cs
└── Startup.cs
当我将新的 npm 模块添加到 React 项目(这将更新 package.json)并推送到我们的团队 Git 存储库时,其他团队成员在拉取后必须手动执行 ClientApp 目录中的 npm install新的提交,否则构建过程将由于缺少依赖项而失败。
对于前端开发者来说这很正常,但是对于一些只专注于后端开发的开发者来说,这很麻烦,他们必须做一些额外的过程才能构建项目(他们通常只是ctrl + F5,这很好)。
我尝试了以下方法:
- 将 nodejs 目录添加到
Tools -> Options -> External Web Tools,我以为这会承认 IDE 为我完成这项工作,但似乎没有。 - 原来的
.csproj文件提供了这样一个方法:
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**; $(SpaRoot)build-ssr\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
在发布时,它似乎是 ASP.NET 项目的某种自动脚本,但我不太清楚如何调整它以便它在开发模式构建时完成工作。
有没有办法让npm install 的过程单独与 ASP.NET IDE 构建过程一起出现?换句话说,我正在寻找一种在构建 ASP.NET 项目时自动安装 npm 模块的方法。
【问题讨论】:
标签: c# reactjs visual-studio asp.net-core npm