react-native-windows/Directory.Build.targets

196 строки
7.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Project>
<!-- This target is used to compute the inputs and outputs for running the `yarn install`. -->
<Target
Name="ReactNativeYarnInstallInputAndOutputs"
>
<ItemGroup>
<_ReactNativeYarnInstallInputFiles Include="$(MSBuildThisFileDirectory)yarn.lock" />
<_ReactNativeYarnInstallInputFiles Include="$(MSBuildThisFileDirectory)**\package.json" Exclude="$(MSBuildThisFileDirectory)node_modules\**" />
<_ReactNativeYarnInstallOutputFiles Include="@(_ReactNativeYarnInstallInputFiles->'$(ReactNativeYarnIntDir)%(RecursiveDir)%(Filename)%(Extension).dummy')" />
</ItemGroup>
</Target>
<!--
This target runs `yarn install` and then `yarn build` as a post install step in `package.json`.
This is to address build failures by not running `yarn install` after syncing.
We do not run `yarn install` during design time build and in our CI validation runs (detected via AGENT_NAME).
-->
<Target
Name="ReactNativeYarnInstall"
BeforeTargets="BeforeBuild"
DependsOnTargets="ReactNativeYarnInstallInputAndOutputs"
Inputs="@(_ReactNativeYarnInstallInputFiles)"
Outputs="@(_ReactNativeYarnInstallOutputFiles)"
Condition="'$(DesignTimeBuild)'=='' AND '$(AGENT_NAME)' == ''"
>
<Message Text="Running yarn install to fetch latest packages." Importance="High" />
<Message Text="yarn install --frozen-lockfile --mutex file:.yarn-mutex" Importance="High" />
<Exec
ContinueOnError="True"
Command="yarn install --frozen-lockfile --mutex file:.yarn-mutex"
WorkingDirectory="$(MSBuildThisFileDirectory)"
>
<Output TaskParameter="ExitCode" ItemName="_ReactNativeYarnExitCode"/>
</Exec>
<Message Text="yarn install: Succeeded" Condition="'%(_ReactNativeYarnExitCode.Identity)' == '0'" Importance="High" />
<Message Text="yarn install: Failed" Condition="'%(_ReactNativeYarnExitCode.Identity)' != '0'" Importance="High" />
<!-- Fail the build if yarn needs to update yarn.lock file. -->
<Error
Condition="'%(_ReactNativeYarnExitCode.Identity)' != '0'"
Text="Yarn packages are out of date. Please run `yarn install` in the root of the repo to ensure the generated files are up to date"
/>
<!--
Copy the yarn.lock file to prevent this task from running over and over again, and only rerun the check with yarn.lock or any package.json changes.
This will likely miss a few corner cases with local changes to package.json but should catch the most important case after syncing
-->
<MakeDir Directories="$(ReactNativeYarnIntDir)" />
<Copy
Condition="'%(_ReactNativeYarnExitCode.Identity)' == '0'"
SourceFiles="@(_ReactNativeYarnInstallInputFiles)"
DestinationFiles="@(_ReactNativeYarnInstallOutputFiles)"
SkipUnchangedFiles="true"
Retries="5"
RetryDelayMilliseconds="100" />
<!-- We have to touch the outputs to ensure up to date incrementaility works-->
<Touch Files="@(_ReactNativeYarnInstallOutputFiles)" />
</Target>
<!-- For build debugging purposes. -->
<Target Name="Vars">
<ItemGroup>
<_VarsGeneral Include="
ApplicationType;
Configuration;
Platform;
PlatformTarget;
PlatformName;
DefaultPlatformToolset;
PlatformToolset;
SolutionPath;
SolutionDir;
IntDir;
OutDir;
TargetDir;
TargetPath;
TLogLocation;
LastBuildUnsuccessful;
LastBuildState;
GeneratedFilesDir;
TargetFrameworkMoniker;
MSBuildExtensionsPath;
MSBuildExtensionsPath32;
MSBuildExtensionsPath64;
VCTargetsPath;
UserRootDir;
ProjectHome;
IntermediateOutputPath;
OutputPath;
" />
<_VarsCustom Include="
RootDir;
RootIntDir;
RootOutDir;
BaseIntDir;
BaseOutDir;
ReactNativeDir;
ReactNativeWindowsDir;
FollyDir;
YogaDir;
WinVer;
" />
<_VarsWinRT Include="
UnmergedWinmdDirectory;
MergedWinmdDirectory;
" />
<_VarsJSEngine Include="
PkgReactNative_Hermes_Windows;
EnableHermesInspectorInReleaseFlavor;
UseHermes;
HermesVersion;
HermesPackage;
HermesArch;
UseFabric;
UseV8;
V8Package;
V8Version;
V8AppPlatform;
" />
<_VarsNuGet Include="
AssetTargetFallback;
IncludeFrameworkReferencesFromNuGet;
NuGetPackageRoot;
NuGetPackagesDirectory;
NuGetRuntimeIdentifier;
ProjectLockFile;
NuGetTargetMoniker;
TargetFramework;
TargetFrameworks;
TargetFrameworkIdentifier;
BaseNuGetRuntimeIdentifier;
TargetPlatformIdentifier;
MSBuildProjectExtensionsPath;
RestoreProjectStyle;
RestoreUseStaticGraphEvaluation;
" />
<_VarsWinUI Include="
UseWinUI3;
WinUI3Version;
WinUI2xVersion;
WinUIPackageName;
WinUIPackageVersion;
IsWinUIAlpha;
" />
</ItemGroup>
<Message Text="General" />
<Message Text="=> @(_VarsGeneral->PadRight(24)) [$(%(_VarsGeneral.Identity))]" />
<Message Text="%0A" />
<Message Text="Custom" />
<Message Text="=> @(_VarsCustom->PadRight(24)) [$(%(_VarsCustom.Identity))]" />
<Message Text="%0A" />
<Message Text="Microsoft.CppBuild.targets/MakeDirsForCl" />
<Message Text="=> PrecompiledHeaderOutputFile [@(CLCompile->Metadata('PrecompiledHeaderOutputFile')->DirectoryName()->Distinct())]" />
<Message Text="=> AssemblerListingLocation [@(CLCompile->Metadata('AssemblerListingLocation')->DirectoryName()->Distinct())]" />
<Message Text="=> ObjectFileName [@(CLCompile->Metadata('ObjectFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> ProgramDataBaseFileName [@(CLCompile->Metadata('ProgramDataBaseFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> XMLDocumentationFileName [@(CLCompile->Metadata('XMLDocumentationFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> BrowseInformationFile [@(CLCompile->Metadata('BrowseInformationFile')->DirectoryName()->Distinct())]" />
<Message Text="=> PreprocessOutputPath [@(CLCompile->Metadata('PreprocessOutputPath')->DirectoryName()->Distinct())]" />
<Message Text="=> PreprocessorDefinitions [@(CLCompile->Metadata('PreprocessorDefinitions')->Distinct())]" />
<Message Text="=> ClDirsToMake [@(ClDirsToMake)]" />
<Message Text="%0A" />
<Message Text="WinRT" />
<Message Text="=> @(_VarsWinRT->PadRight(24)) [$(%(_VarsWinRT.Identity))]" />
<Message Text="%0A" />
<Message Text="JS Engine" />
<Message Text="=> @(_VarsJSEngine->PadRight(40)) [$(%(_VarsJSEngine.Identity))]" />
<Message Text="%0A" />
<Message Text="NuGet" />
<Message Text="=> @(_VarsNuGet->PadRight(40)) [$(%(_VarsNuGet.Identity))]" />
<Message Text="=> PackageReference->Count [@(PackageReference->Count())]" />
<Message Text="%0A" />
<Message Text="WinUI" />
<Message Text="=> @(_VarsWinUI->PadRight(40)) [$(%(_VarsWinUI.Identity))]" />
<Message Text="%0A" />
<Message Text="Items" />
<Message Text="=> ProjectCapability" />
<Message Text=" %(ProjectCapability.Identity)" />
</Target>
</Project>