Iceshrimp.NET/Iceshrimp.Build/Iceshrimp.Build.targets
2024-11-19 04:06:51 +01:00

41 lines
No EOL
1.9 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Disables static asset compression during regular builds -->
<Target Name="DisableBuildCompression" Condition="$(_IsPublishing)' != 'true'">
<PropertyGroup>
<DisableBuildCompression>true</DisableBuildCompression>
</PropertyGroup>
</Target>
<!-- This saves a bunch of disk space by skipping gzip compression during publish. -->
<Target Name="OverrideBuildCompressionFormats" BeforeTargets="ResolveBuildCompressedStaticWebAssetsConfiguration">
<PropertyGroup>
<BuildCompressionFormats>;</BuildCompressionFormats>
</PropertyGroup>
</Target>
<!-- This is also neeed to skip gzip compression during publish. -->
<Target Name="OverridePublishCompressionFormats" BeforeTargets="ResolvePublishCompressedStaticWebAssetsConfiguration">
<PropertyGroup>
<PublishCompressionFormats>;brotli</PublishCompressionFormats>
</PropertyGroup>
</Target>
<!-- This saves a bunch of disk space by discarding uncompressed static assets. -->
<!-- For clients that don't support brotli, transparent stream decompression will be used. -->
<Target Name="KeepOnlyBrotliCompressedStaticAssets" AfterTargets="Publish">
<ItemGroup>
<CompressedFiles Include="$(PublishDir)\wwwroot\**\*.br" />
<FilesToClean Include="@(CompressedFiles->'%(RootDir)%(Directory)%(Filename)')" />
</ItemGroup>
<Delete Files="@(FilesToClean->Exists())" />
</Target>
<!-- This rewrites the static asset endpoints JSON file to enable transparent decompression. -->
<Target Name="_RewriteStaticAssetManifest" AfterTargets="KeepOnlyBrotliCompressedStaticAssets">
<RewriteStaticAssetManifest Manifest="$(PublishDir)\Iceshrimp.Backend.staticwebassets.endpoints.json" />
</Target>
</Project>