Created
October 12, 2019 10:42
-
-
Save ShawInnes/9b9b0e67007a2b16b070d390890d5c6a to your computer and use it in GitHub Desktop.
How to include a SPA build in asp.net core
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Project Sdk="Microsoft.NET.Sdk.Web"> | |
<PropertyGroup> | |
<TargetFramework>netcoreapp3.0</TargetFramework> | |
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> | |
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion> | |
<IsPackable>false</IsPackable> | |
<SpaRoot>../../webapp/</SpaRoot> | |
<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes> | |
<!-- Set this to true if you enable server-side prerendering --> | |
<BuildServerSideRenderer>false</BuildServerSideRenderer> | |
</PropertyGroup> | |
<ItemGroup> | |
<!-- Don't publish the SPA source files, but do show them in the project files list --> | |
<Content Remove="$(SpaRoot)**" /> | |
<None Remove="$(SpaRoot)**" /> | |
<None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" LinkBase="webapp/" /> | |
</ItemGroup> | |
<Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') "> | |
<!-- Ensure Node.js is installed --> | |
<Exec Command="node --version" ContinueOnError="true"> | |
<Output TaskParameter="ExitCode" PropertyName="ErrorCode" /> | |
</Exec> | |
<Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." /> | |
<Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." /> | |
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" /> | |
</Target> | |
<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 -- --prod" /> | |
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " /> | |
<!-- Include the newly-built files in the publish output --> | |
<ItemGroup> | |
<DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" /> | |
<DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" /> | |
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)"> | |
<RelativePath>%(DistFiles.Identity)</RelativePath> | |
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> | |
<ExcludeFromSingleFile>true</ExcludeFromSingleFile> | |
</ResolvedFileToPublish> | |
</ItemGroup> | |
</Target> | |
</Project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment