Build incrementalism for npmpropj files (#14032)

* Build incrementalism for npmpropj files

* Ensure missing js output files results in rebuild
* Make the _Pack target incremental
* Reduce build spew
This commit is contained in:
Pranav K 2019-09-16 16:48:24 -07:00 committed by GitHub
parent d7e19c429c
commit a6fb55c405
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 11 deletions

View File

@ -20,16 +20,20 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<TSFiles Include="$(MSBuildProjectDirectory)\*\*.ts" /> <TSFiles Include="src\**\*.ts" />
<TSFiles Include="$(MSBuildProjectDirectory)\package.json" /> <TSFiles Include="test\**\*.ts" />
<TSFiles Include="$(MSBuildProjectDirectory)\*.npmproj" /> <TSFiles Include="package.json" />
<TSFiles Include="*.npmproj" />
<BuildOutputFiles Include="$(BaseIntermediateOutputPath)\build-sentinel" />
<BuildOutputFiles Include="dist\**\*.js" />
</ItemGroup> </ItemGroup>
<Target Name="_CheckForInvalidConfiguration"> <Target Name="_CheckForInvalidConfiguration">
<Error Text="Missing expected property: PackageId" Condition="'$(IsPackable)' != 'false' and '$(PackageId)' == ''" /> <Error Text="Missing expected property: PackageId" Condition="'$(IsPackable)' != 'false' and '$(PackageId)' == ''" />
<Exec ContinueOnError="true" Command="node -v"> <Exec ContinueOnError="true" Command="node -v" StandardOutputImportance="Low">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/> <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec> </Exec>
<Error Text="Building *.npmproj but NodeJS was not detected on path. Ensure NodeJS is on path or disable building NodeJS projects with /p:BuildNodeJs=false. Skipping NodeJS projects will also skip managed projects depending on them, including Components, Mvc and Analysers." Condition="'$(ErrorCode)' != '0'"/> <Error Text="Building *.npmproj but NodeJS was not detected on path. Ensure NodeJS is on path or disable building NodeJS projects with /p:BuildNodeJs=false. Skipping NodeJS projects will also skip managed projects depending on them, including Components, Mvc and Analysers." Condition="'$(ErrorCode)' != '0'"/>
@ -53,12 +57,25 @@
<CallTarget Targets="_Pack" Condition="'$(PackOnBuild)' == 'true'" /> <CallTarget Targets="_Pack" Condition="'$(PackOnBuild)' == 'true'" />
</Target> </Target>
<Target Name="GetBuildInputCacheFile">
<Hash ItemsToHash="@(TSFiles)">
<Output TaskParameter="HashResult" PropertyName="_TSFileHash" />
</Hash>
<WriteLinesToFile
Lines="$(_TSFileHash)"
File="$(BaseIntermediateOutputPath)tsfiles.cache"
Overwrite="True"
WriteOnlyWhenDifferent="True" />
</Target>
<Target Name="_Build" <Target Name="_Build"
Condition="'$(IsBuildable)' != 'false'" Condition="'$(IsBuildable)' != 'false'"
Inputs="@(TSFiles)" DependsOnTargets="GetBuildInputCacheFile"
Outputs="$(BaseIntermediateOutputPath)\build-sentinel" > Inputs="@(TSFiles);$(BaseIntermediateOutputPath)tsfiles.cache"
Outputs="@(BuildOutputFiles)">
<Yarn Command="$(NpmBuildArgs)" StandardOutputImportance="High" StandardErrorImportance="High" /> <Yarn Command="$(NpmBuildArgs)" StandardOutputImportance="High" StandardErrorImportance="High" />
<WriteLinesToFile Overwrite="true" File="$(BaseIntermediateOutputPath)\build-sentinel" /> <WriteLinesToFile Overwrite="true" File="$(BaseIntermediateOutputPath)build-sentinel" />
</Target> </Target>
<PropertyGroup> <PropertyGroup>
@ -73,7 +90,10 @@
</PackDependsOn> </PackDependsOn>
</PropertyGroup> </PropertyGroup>
<Target Name="_Pack" Condition="'$(IsPackable)' == 'true'" > <Target Name="_Pack" Condition="'$(IsPackable)' == 'true'"
Inputs="@(TSFiles)"
Outputs="$(PackageOutputPath)\$(PackageFileName)">
<PropertyGroup> <PropertyGroup>
<_PackageTargetPath>$(MSBuildProjectDirectory)\$(PackageFileName)</_PackageTargetPath> <_PackageTargetPath>$(MSBuildProjectDirectory)\$(PackageFileName)</_PackageTargetPath>
</PropertyGroup> </PropertyGroup>

View File

@ -6,6 +6,11 @@
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<BuildOutputFiles Include="dist\release\blazor.server.js" />
<BuildOutputFiles Include="dist\release\blazor.webassembly.js" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference <ProjectReference
Include="..\..\SignalR\clients\ts\signalr\signalr.npmproj" Include="..\..\SignalR\clients\ts\signalr\signalr.npmproj"

File diff suppressed because one or more lines are too long

View File

@ -13,5 +13,9 @@
<ProjectReference Include="..\signalr\signalr.npmproj" /> <ProjectReference Include="..\signalr\signalr.npmproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<BuildOutputFiles Include="dist\browser\signalr-protocol-msgpack.js" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" /> <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project> </Project>

View File

@ -8,5 +8,10 @@
<IsShippingPackage>true</IsShippingPackage> <IsShippingPackage>true</IsShippingPackage>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<BuildOutputFiles Include="dist\browser\signalr.js" />
<BuildOutputFiles Include="dist\webworker\signalr.js" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" /> <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project> </Project>