Skip to content

Commit 8c3f13e

Browse files
committed
[StaticWebAssets] Optimize compression (#47734)
* Fix issue where publish compression was disabled when build compression was disabled * Support passing a custom compression level with BrotliCompressionLevel * Compress only current project assets for Razor Class Libraries and compress assets missing compression on Web and Blazor scenarios. * Support disabling compression for discovered assets (stuff in the wwwroot folder) * Create endpoints for package assets without endpoints
1 parent d79ec02 commit 8c3f13e

File tree

101 files changed

+7691
-3224
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+7691
-3224
lines changed

src/StaticWebAssetsSdk/Targets/Microsoft.NET.Sdk.StaticWebAssets.Compression.targets

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,13 @@ Copyright (c) .NET Foundation. All rights reserved.
161161
</PropertyGroup>
162162

163163
<PropertyGroup>
164-
<BuildCompressionFormats>$(BuildCompressionFormats);gzip</BuildCompressionFormats>
165-
<PublishCompressionFormats>$(PublishCompressionFormats);gzip;brotli</PublishCompressionFormats>
164+
<EnableDefaultCompressionFormats Condition="'$(EnableDefaultCompressionFormats)' == ''">true</EnableDefaultCompressionFormats>
165+
<BuildCompressionFormats Condition="'$(EnableDefaultCompressionFormats)' == 'true'">$(BuildCompressionFormats);gzip</BuildCompressionFormats>
166+
<PublishCompressionFormats Condition="'$(EnableDefaultCompressionFormats)' == 'true'">$(PublishCompressionFormats);gzip;brotli</PublishCompressionFormats>
166167
<DisableBuildCompression Condition="'$(DisableBuildCompression)' == ''">false</DisableBuildCompression>
167-
<CompressionIncludePatterns>$(CompressionIncludePatterns)</CompressionIncludePatterns>
168-
<CompressionExcludePatterns>$(CompressionExcludePatterns)</CompressionExcludePatterns>
168+
<CompressDiscoveredAssetsDuringBuild Condition="$(CompressDiscoveredAssetsDuringBuild) == ''">true</CompressDiscoveredAssetsDuringBuild>
169+
<!-- Support passing in a custom compression level to brotli and respect the old internal flag for blazor -->
170+
<BrotliCompressionLevel Condition="'$(_BlazorBrotliCompressionLevel)' != ''">$(_BlazorBrotliCompressionLevel)</BrotliCompressionLevel>
169171
</PropertyGroup>
170172

171173
<PropertyGroup>
@@ -195,7 +197,7 @@ Copyright (c) .NET Foundation. All rights reserved.
195197
GeneratePublishCompressedStaticWebAssets
196198
ResolvePublishCompressedStaticWebAssetsConfiguration
197199
-->
198-
<ResolvePublishRelatedStaticWebAssetsDependsOn Condition="'$(DisableBuildCompression)' != 'true'">
200+
<ResolvePublishRelatedStaticWebAssetsDependsOn>
199201
ResolvePublishCompressedStaticWebAssets;
200202
$(ResolvePublishRelatedStaticWebAssetsDependsOn)
201203
</ResolvePublishRelatedStaticWebAssetsDependsOn>
@@ -270,7 +272,7 @@ Copyright (c) .NET Foundation. All rights reserved.
270272

271273
<BrotliCompress Condition="'@(_BrotliCompressedStaticWebAssets)' != ''"
272274
FilesToCompress="@(_BrotliCompressedStaticWebAssets)"
273-
CompressionLevel="$(_BlazorBrotliCompressionLevel)"
275+
CompressionLevel="$(BrotliCompressionLevel)"
274276
ToolAssembly="$(_StaticWebAssetsSdkToolAssembly)"
275277
ToolExe="$(_DotNetHostFileName)"
276278
ToolPath="$(_DotNetHostDirectory)" />
@@ -304,8 +306,29 @@ Copyright (c) .NET Foundation. All rights reserved.
304306
<StaticWebAsset Include="@(_PrecompressedStaticWebAssets)" />
305307
</ItemGroup>
306308

309+
<PropertyGroup>
310+
<StaticWebAssetBuildCompressAllAssets Condition="'$(StaticWebAssetBuildCompressAllAssets)' == '' and '$(StaticWebAssetProjectMode)' == 'Root'">true</StaticWebAssetBuildCompressAllAssets>
311+
<StaticWebAssetBuildCompressAllAssets Condition="'$(StaticWebAssetBuildCompressAllAssets)' == ''">false</StaticWebAssetBuildCompressAllAssets>
312+
</PropertyGroup>
313+
314+
<ItemGroup Condition="'$(StaticWebAssetBuildCompressAllAssets)' == 'true'">
315+
<_CandidateAssetsForBuild Include="@(StaticWebAsset)" />
316+
</ItemGroup>
317+
318+
<ItemGroup Condition="'$(StaticWebAssetBuildCompressAllAssets)' != 'true'">
319+
<_CandidateAssetsForBuild
320+
Include="@(StaticWebAsset)"
321+
Condition="'%(SourceType)' == 'Discovered' or '%(SourceType)' == 'Computed'" />
322+
</ItemGroup>
323+
324+
<ItemGroup Condition="'$(CompressDiscoveredAssetsDuringBuild)' != 'true'">
325+
<_CandidateAssetsForBuild
326+
Remove="@(_CandidateAssetsForBuild)"
327+
Condition="'%(SourceType)' == 'Discovered'" />
328+
</ItemGroup>
329+
307330
<ResolveCompressedAssets
308-
CandidateAssets="@(StaticWebAsset)"
331+
CandidateAssets="@(_CandidateAssetsForBuild)"
309332
Formats="$(BuildCompressionFormats)"
310333
IncludePatterns="$(CompressionIncludePatterns)"
311334
ExcludePatterns="$(CompressionExcludePatterns)"
@@ -386,12 +409,23 @@ Copyright (c) .NET Foundation. All rights reserved.
386409

387410
<Target Name="ResolvePublishCompressedStaticWebAssetsConfiguration" DependsOnTargets="ResolvePublishStaticWebAssets;$(ResolveCompressedFilesForPublishDependsOn)">
388411

389-
<ItemGroup>
412+
<PropertyGroup>
413+
<StaticWebAssetPublishCompressAllAssets Condition="'$(StaticWebAssetPublishCompressAllAssets)' == '' and '$(StaticWebAssetProjectMode)' == 'Root'">true</StaticWebAssetPublishCompressAllAssets>
414+
<StaticWebAssetPublishCompressAllAssets Condition="'$(StaticWebAssetPublishCompressAllAssets)' == ''">false</StaticWebAssetPublishCompressAllAssets>
415+
</PropertyGroup>
416+
417+
<ItemGroup Condition="'$(StaticWebAssetPublishCompressAllAssets)' == 'true'">
390418
<_CandidateAssetsForPublish
391419
Include="@(StaticWebAsset)"
392420
Condition="'%(AssetKind)' != 'Build'" />
393421
</ItemGroup>
394422

423+
<ItemGroup Condition="'$(StaticWebAssetPublishCompressAllAssets)' != 'true'">
424+
<_CandidateAssetsForPublish
425+
Include="@(StaticWebAsset)"
426+
Condition="'%(AssetKind)' != 'Build' and ('%(SourceType)' == 'Discovered' or '%(SourceType)' == 'Computed')" />
427+
</ItemGroup>
428+
395429
<ResolveCompressedAssets
396430
CandidateAssets="@(_CandidateAssetsForPublish)"
397431
Formats="$(PublishCompressionFormats)"

src/StaticWebAssetsSdk/Targets/Microsoft.NET.Sdk.StaticWebAssets.targets

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,10 +717,23 @@ Copyright (c) .NET Foundation. All rights reserved.
717717
<Output TaskParameter="OriginalAssets" ItemName="_OriginalPackageAssets" />
718718
</UpdatePackageStaticWebAssets>
719719

720+
<ItemGroup>
721+
<_AssetsWithoutEndpoints Include="@(_UpdatedPackageAssets)" Exclude="@(StaticWebAssetEndpoint->'%(AssetFile)')" />
722+
</ItemGroup>
723+
724+
<DefineStaticWebAssetEndpoints
725+
CandidateAssets="@(_AssetsWithoutEndpoints)"
726+
ContentTypeMappings="@(StaticWebAssetContentTypeMapping)"
727+
>
728+
<Output TaskParameter="Endpoints" ItemName="_UpdatedPackageAssetsEndpoint" />
729+
</DefineStaticWebAssetEndpoints>
730+
720731
<ItemGroup>
721732
<StaticWebAsset Remove="@(_OriginalPackageAssets)"/>
722733
<StaticWebAsset Include="@(_UpdatedPackageAssets)" />
734+
<StaticWebAssetEndpoint Include="@(_UpdatedPackageAssetsEndpoint)" />
723735
</ItemGroup>
736+
724737
</Target>
725738

726739
<Import Project="Microsoft.NET.Sdk.StaticWebAssets.Publish.targets" />

src/WebSdk/Web/Targets/Sdk.Server.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ Copyright (c) .NET Foundation. All rights reserved.
2121
<!-- Default properties that shouldn't be replaced by the microsoft.net.sdk.props -->
2222
<PropertyGroup>
2323
<DebugSymbols Condition="'$(DebugSymbols)' == ''">true</DebugSymbols>
24+
<StaticWebAssetProjectMode>Root</StaticWebAssetProjectMode>
25+
<StaticWebAssetBasePath>/</StaticWebAssetBasePath>
2426
</PropertyGroup>
2527

2628
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props" />

0 commit comments

Comments
 (0)