Skip to content

[StaticWebAssets] Generate Link elements based on StaticWebAssets manifest properties #47915

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Apr 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--
***********************************************************************************************
Microsoft.NET.Sdk.StaticWebAssets.HtmlImportMap.targets
Microsoft.NET.Sdk.StaticWebAssets.OverrideHtmlAssetPlaceholders.targets

WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
created a backup copy. Incorrect changes to this file will make it
Expand All @@ -12,74 +12,79 @@ Copyright (c) .NET Foundation. All rights reserved.

<Project ToolsVersion="14.0">

<UsingTask TaskName="Microsoft.AspNetCore.StaticWebAssets.Tasks.WriteImportMapToHtml" AssemblyFile="$(StaticWebAssetsSdkBuildTasksAssembly)" />
<UsingTask TaskName="Microsoft.AspNetCore.StaticWebAssets.Tasks.OverrideHtmlAssetPlaceholders" AssemblyFile="$(StaticWebAssetsSdkBuildTasksAssembly)" />

<PropertyGroup>
<!-- Workaround until we update runtime -->
<WriteImportMapToHtml>true</WriteImportMapToHtml>
</PropertyGroup>

<PropertyGroup>

<!--
ResolveBuildRelatedStaticWebAssets
ResolveHtmlImportMapBuildStaticWebAssets
GenerateHtmlImportMapBuildStaticWebAssets
ResolveHtmlImportMapBuildConfiguration
ResolveHtmlAssetPlaceholdersBuildStaticWebAssets
GenerateHtmlAssetPlaceholdersBuildStaticWebAssets
ResolveHtmlAssetPlaceholdersBuildConfiguration
-->
<ResolveBuildRelatedStaticWebAssetsDependsOn>
$(ResolveBuildRelatedStaticWebAssetsDependsOn);
ResolveHtmlImportMapBuildStaticWebAssets;
ResolveHtmlAssetPlaceholdersBuildStaticWebAssets;
</ResolveBuildRelatedStaticWebAssetsDependsOn>
<ResolveCompressedFilesDependsOn>
$(ResolveCompressedFilesDependsOn);
ResolveHtmlImportMapBuildStaticWebAssets
ResolveHtmlAssetPlaceholdersBuildStaticWebAssets
</ResolveCompressedFilesDependsOn>
<ResolveBuildServiceWorkerStaticWebAssetsDependsOn>
$(ResolveBuildServiceWorkerStaticWebAssetsDependsOn);
ResolveHtmlImportMapBuildStaticWebAssets
ResolveHtmlAssetPlaceholdersBuildStaticWebAssets
</ResolveBuildServiceWorkerStaticWebAssetsDependsOn>
<ResolveHtmlImportMapBuildStaticWebAssetsDependsOn>
GenerateHtmlImportMapBuildStaticWebAssets;
$(ResolveHtmlImportMapBuildStaticWebAssetsDependsOn)
</ResolveHtmlImportMapBuildStaticWebAssetsDependsOn>
<GenerateHtmlImportMapBuildStaticWebAssetsDependsOn>
ResolveHtmlImportMapBuildConfiguration;
$(GenerateHtmlImportMapBuildStaticWebAssetsDependsOn)
</GenerateHtmlImportMapBuildStaticWebAssetsDependsOn>
<ResolveHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn>
$(ResolveHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn);
GenerateHtmlAssetPlaceholdersBuildStaticWebAssets
</ResolveHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn>
<GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn>
$(GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn);
ResolveHtmlAssetPlaceholdersBuildConfiguration
</GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn>

<!--
ResolvePublishRelatedStaticWebAssets
ResolveHtmlImportMapPublishStaticWebAssets
GenerateHtmlImportMapPublishStaticWebAssets
ResolveHtmlImportMapPublishConfiguration
ResolveHtmlAssetPlaceholdersPublishStaticWebAssets
GenerateHtmlAssetPlaceholdersPublishStaticWebAssets
ResolveHtmlAssetPlaceholdersPublishConfiguration
-->
<ResolvePublishRelatedStaticWebAssetsDependsOn>
$(ResolvePublishRelatedStaticWebAssetsDependsOn);
ResolveHtmlImportMapPublishStaticWebAssets
ResolveHtmlAssetPlaceholdersPublishStaticWebAssets
</ResolvePublishRelatedStaticWebAssetsDependsOn>
<ResolvePublishCompressedStaticWebAssetsDependsOn>
$(ResolvePublishCompressedStaticWebAssetsDependsOn);
ResolveHtmlImportMapPublishStaticWebAssets
ResolveHtmlAssetPlaceholdersPublishStaticWebAssets
</ResolvePublishCompressedStaticWebAssetsDependsOn>
<ResolvePublishServiceWorkerStaticWebAssetsDependsOn>
$(ResolvePublishServiceWorkerStaticWebAssetsDependsOn);
ResolveHtmlImportMapPublishStaticWebAssets
ResolveHtmlAssetPlaceholdersPublishStaticWebAssets
</ResolvePublishServiceWorkerStaticWebAssetsDependsOn>
<ResolveHtmlImportMapPublishStaticWebAssetsDependsOn>
GenerateHtmlImportMapPublishStaticWebAssets;
$(ResolveHtmlImportMapPublishStaticWebAssetsDependsOn)
</ResolveHtmlImportMapPublishStaticWebAssetsDependsOn>
<GenerateHtmlImportMapPublishStaticWebAssetsDependsOn>
ResolveHtmlImportMapPublishConfiguration;
$(GenerateHtmlImportMapPublishStaticWebAssetsDependsOn)
</GenerateHtmlImportMapPublishStaticWebAssetsDependsOn>
<ResolveHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn>
$(ResolveHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn);
GenerateHtmlAssetPlaceholdersPublishStaticWebAssets
</ResolveHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn>
<GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn>
$(GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn);
ResolveHtmlAssetPlaceholdersPublishConfiguration
</GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn>

</PropertyGroup>

<!-- Build -->

<Target Name="ResolveHtmlImportMapBuildConfiguration">
<Target Name="ResolveHtmlAssetPlaceholdersBuildConfiguration">
<PropertyGroup>
<_BuildImportMapHtmlPath>$([MSBuild]::NormalizeDirectory($(_StaticWebAssetsIntermediateOutputPath), 'importmaphtml', 'build'))</_BuildImportMapHtmlPath>
<_BuildHtmlAssetPlaceholdersPath>$([MSBuild]::NormalizeDirectory($(_StaticWebAssetsIntermediateOutputPath), 'htmlassetplaceholders', 'build'))</_BuildHtmlAssetPlaceholdersPath>
</PropertyGroup>

<MakeDir Directories="$(_BuildImportMapHtmlPath)"/>
<MakeDir Directories="$(_BuildHtmlAssetPlaceholdersPath)"/>

<ItemGroup>
<_HtmlStaticWebAssets Include="@(StaticWebAsset)" Condition="'%(AssetKind)' != 'Publish' and '%(Extension)' == '.html'" />
Expand All @@ -95,25 +100,25 @@ Copyright (c) .NET Foundation. All rights reserved.
</FilterStaticWebAssetEndpoints>
</Target>

<Target Name="GenerateHtmlImportMapBuildStaticWebAssets" DependsOnTargets="$(GenerateHtmlImportMapBuildStaticWebAssetsDependsOn)">
<WriteImportMapToHtml
<Target Name="GenerateHtmlAssetPlaceholdersBuildStaticWebAssets" DependsOnTargets="$(GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn)">
<OverrideHtmlAssetPlaceholders
Assets="@(_EsModuleCandidate)"
Endpoints="@(_EsModuleCandidateEndpoints)"
IncludeOnlyHardFingerprintedModules="false"
HtmlFiles="@(_HtmlStaticWebAssets)"
OutputPath="$(_BuildImportMapHtmlPath)">
OutputPath="$(_BuildHtmlAssetPlaceholdersPath)">
<Output TaskParameter="HtmlCandidates" ItemName="_HtmlCandidates" />
<Output TaskParameter="HtmlFilesToRemove" ItemName="_HtmlFilesToRemove" />
<Output TaskParameter="FileWrites" ItemName="FileWrites" />
</WriteImportMapToHtml>
</OverrideHtmlAssetPlaceholders>
</Target>

<Target Name="ResolveHtmlImportMapBuildStaticWebAssets" DependsOnTargets="$(ResolveHtmlImportMapBuildStaticWebAssetsDependsOn)">
<Target Name="ResolveHtmlAssetPlaceholdersBuildStaticWebAssets" DependsOnTargets="$(ResolveHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn)">
<ItemGroup>
<_HtmlCandidatesNoMetadata
Include="@(_HtmlCandidates)"
RemoveMetadata="SourceType;AssetKind;Integrity;Fingerprint" />
<_HtmlCandidatesNoMetadata ContentRoot="$(_BuildImportMapHtmlPath)" />
<_HtmlCandidatesNoMetadata ContentRoot="$(_BuildHtmlAssetPlaceholdersPath)" />
</ItemGroup>
<DefineStaticWebAssets CandidateAssets="@(_HtmlCandidatesNoMetadata)"
SourceType="Computed"
Expand Down Expand Up @@ -145,12 +150,12 @@ Copyright (c) .NET Foundation. All rights reserved.

<!-- Publish -->

<Target Name="ResolveHtmlImportMapPublishConfiguration">
<Target Name="ResolveHtmlAssetPlaceholdersPublishConfiguration">
<PropertyGroup>
<_PublishImportMapHtmlPath>$([MSBuild]::NormalizeDirectory($(_StaticWebAssetsIntermediateOutputPath), 'importmaphtml', 'publish'))</_PublishImportMapHtmlPath>
<_PublishHtmlAssetPlaceholdersPath>$([MSBuild]::NormalizeDirectory($(_StaticWebAssetsIntermediateOutputPath), 'htmlassetplaceholders', 'publish'))</_PublishHtmlAssetPlaceholdersPath>
</PropertyGroup>

<MakeDir Directories="$(_PublishImportMapHtmlPath)"/>
<MakeDir Directories="$(_PublishHtmlAssetPlaceholdersPath)"/>

<ItemGroup>
<_EsModuleCandidateForPublish Include="@(StaticWebAsset)" Condition="'%(AssetKind)' != 'Build'" />
Expand All @@ -165,25 +170,25 @@ Copyright (c) .NET Foundation. All rights reserved.
</FilterStaticWebAssetEndpoints>
</Target>

<Target Name="GenerateHtmlImportMapPublishStaticWebAssets" DependsOnTargets="$(GenerateHtmlImportMapPublishStaticWebAssetsDependsOn)">
<WriteImportMapToHtml
<Target Name="GenerateHtmlAssetPlaceholdersPublishStaticWebAssets" DependsOnTargets="$(GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn)">
<OverrideHtmlAssetPlaceholders
Assets="@(_EsModuleCandidateForPublish)"
Endpoints="@(_EsModuleCandidateForPublishEndpoints)"
IncludeOnlyHardFingerprintedModules="true"
HtmlFiles="@(_HtmlStaticWebAssets)"
OutputPath="$(_PublishImportMapHtmlPath)">
OutputPath="$(_PublishHtmlAssetPlaceholdersPath)">
<Output TaskParameter="HtmlCandidates" ItemName="_HtmlPublishCandidates" />
<Output TaskParameter="HtmlFilesToRemove" ItemName="_HtmlPublishFilesToRemove" />
<Output TaskParameter="FileWrites" ItemName="FileWrites" />
</WriteImportMapToHtml>
</OverrideHtmlAssetPlaceholders>
</Target>

<Target Name="ResolveHtmlImportMapPublishStaticWebAssets" DependsOnTargets="$(ResolveHtmlImportMapPublishStaticWebAssetsDependsOn)">
<Target Name="ResolveHtmlAssetPlaceholdersPublishStaticWebAssets" DependsOnTargets="$(ResolveHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn)">
<ItemGroup>
<_HtmlPublishCandidatesNoMetadata
Include="@(_HtmlPublishCandidates)"
RemoveMetadata="SourceType;AssetKind;Integrity;Fingerprint" />
<_HtmlPublishCandidatesNoMetadata ContentRoot="$(_PublishImportMapHtmlPath)" />
<_HtmlPublishCandidatesNoMetadata ContentRoot="$(_PublishHtmlAssetPlaceholdersPath)" />
</ItemGroup>
<DefineStaticWebAssets CandidateAssets="@(_HtmlPublishCandidatesNoMetadata)"
SourceType="Computed"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -741,6 +741,6 @@ Copyright (c) .NET Foundation. All rights reserved.

<Import Project="Microsoft.NET.Sdk.StaticWebAssets.ServiceWorker.targets" Condition="'$(ServiceWorkerAssetsManifest)' != ''" />

<Import Project="Microsoft.NET.Sdk.StaticWebAssets.HtmlImportMap.targets" Condition="'$(WriteImportMapToHtml)' == 'true'" />
<Import Project="Microsoft.NET.Sdk.StaticWebAssets.HtmlAssetPlaceholders.targets" Condition="'$(OverrideHtmlAssetPlaceholders)' == 'true'" />

</Project>
Loading