|
2 | 2 | <PropertyGroup Label="Tailwind.Hosting Properties"> |
3 | 3 | <TailwindVersion Condition="'$(TailwindVersion)' == ''">latest</TailwindVersion> |
4 | 4 | <TailwindWatch Condition="'$(TailwindWatch)' == ''">true</TailwindWatch> |
5 | | - <TailwindMinifyOnPublish Condition="'$(TailwindMinifyOnPublish)' == ''">true</TailwindMinifyOnPublish> |
| 5 | + <TailwindMinifyOnPublish Condition="'$(TailwindMinifyOnPublish)' == '' AND '$(Configuration)' == 'Release'">true</TailwindMinifyOnPublish> |
6 | 6 | <TailwindExcludeInputFileOnPublish Condition="'$(TailwindExcludeInputFileOnPublish)' == ''">true</TailwindExcludeInputFileOnPublish> |
7 | 7 |
|
8 | 8 | <TailwindInputCssFile Condition="'$(TailwindInputCssFile)' == ''">wwwroot/styles.css</TailwindInputCssFile> |
|
13 | 13 | <_TailwindConfig>$(OutputPath)tailwind.props.json</_TailwindConfig> |
14 | 14 | </PropertyGroup> |
15 | 15 |
|
| 16 | + <PropertyGroup Label="Tailwind.Hosting DependsOn"> |
| 17 | + <BuildDependsOn> |
| 18 | + TailwindSetupExecutable; |
| 19 | + TailwindGenerateOutput; |
| 20 | + $(BuildDependsOn); |
| 21 | + </BuildDependsOn> |
| 22 | + |
| 23 | + <TailwindSetupExecutableDependsOn> |
| 24 | + $(SetupExecutableDependsOn) |
| 25 | + GetTargetPath; |
| 26 | + </TailwindSetupExecutableDependsOn> |
| 27 | + |
| 28 | + <TailwindGenerateOutputDependsOn> |
| 29 | + $(GenerateOutputDependsOn) |
| 30 | + TailwindSetupExecutable; |
| 31 | + </TailwindGenerateOutputDependsOn> |
| 32 | + |
| 33 | + <TailwindWriteHostingConfigDependsOn> |
| 34 | + $(WriteHostingConfigDependsOn) |
| 35 | + TailwindSetupExecutable; |
| 36 | + </TailwindWriteHostingConfigDependsOn> |
| 37 | + </PropertyGroup> |
| 38 | + |
16 | 39 | <!--Download Tailwindcss executable--> |
17 | | - <Target |
18 | | - Name="SetupExecutableTask" |
19 | | - AfterTargets="Build" |
20 | | - Condition="!Exists('$(_TailwindExecutablePath)')" |
21 | | - > |
| 40 | + <Target Name="TailwindSetupExecutable" |
| 41 | + DependsOnTargets="$(TailwindSetupExecutableDependsOn)" |
| 42 | + Condition="!Exists('$(_TailwindExecutablePath)')"> |
22 | 43 | <SetupExecutableTask |
23 | 44 | TailwindExecutableFolder="$(_TailwindExecutableFolder)" |
24 | | - TailwindVersion="$(TailwindVersion)" |
25 | | - > |
| 45 | + TailwindVersion="$(TailwindVersion)" > |
26 | 46 | <Output TaskParameter="TailwindExecutablePath" PropertyName="_TailwindExecutablePath"/> |
27 | 47 | </SetupExecutableTask> |
28 | 48 |
|
29 | 49 | <ItemGroup> |
30 | 50 | <Content |
31 | 51 | Include="$(_TailwindExecutablePath)" |
32 | 52 | CopyToOutputDirectory="PreserveNewest" |
33 | | - CopyToPublishDirectory="Never" |
34 | | - /> |
| 53 | + CopyToPublishDirectory="Never" /> |
| 54 | + </ItemGroup> |
| 55 | + </Target> |
| 56 | + |
| 57 | + <!-- Generates tailwind output on build--> |
| 58 | + <Target Name="TailwindGenerateOutput" |
| 59 | + AfterTargets="TailwindSetupExecutable" |
| 60 | + Condition="Exists('$(_TailwindExecutablePath)')" |
| 61 | + DependsOnTargets="$(TailwindGenerateOutputDependsOn)"> |
| 62 | + <PropertyGroup Label="Generation Properties"> |
| 63 | + <_TailwindBaseWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)'))</_TailwindBaseWorkingDirectory> |
| 64 | + <_TailwindWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)'))</_TailwindWorkingDirectory> |
| 65 | + <_TailwindExecutablePath>$([System.IO.Path]::Combine('$(_TailwindExecutablePath)'))</_TailwindExecutablePath> |
| 66 | + <_TailwindInputCssFile>$([System.IO.Path]::Combine('$(_TailwindBaseWorkingDirectory)', '$(TailwindInputCssFile)'))</_TailwindInputCssFile> |
| 67 | + <_TailwindOutputCssFile>$([System.IO.Path]::Combine('$(_TailwindBaseWorkingDirectory)', '$(TailwindOutputCssFile)'))</_TailwindOutputCssFile> |
| 68 | + <_TailwindTailwindConfigFile>$([System.IO.Path]::Combine('$(_TailwindBaseWorkingDirectory)', '$(TailwindConfigFile)'))</_TailwindTailwindConfigFile> |
| 69 | + |
| 70 | + <_TailwindGenerateCommand>$(_TailwindExecutablePath) -c $(_TailwindTailwindConfigFile) -i $(_TailwindInputCssFile) -o $(_TailwindOutputCssFile)</_TailwindGenerateCommand> |
| 71 | + <_TailwindGenerateCommand Condition="'$(Configuration)' == 'Release' AND '$(TailwindMinifyOnPublish)' == 'true'"> |
| 72 | + $(_TailwindGenerateCommand) --minify |
| 73 | + </_TailwindGenerateCommand> |
| 74 | + </PropertyGroup> |
| 75 | + <Exec Command="$(_TailwindGenerateCommand)" WorkingDirectory="$(_TailwindBaseWorkingDirectory)"/> |
| 76 | + <!-- Includes the generated file to project references |
| 77 | + NOTE(kallebysantos): For .NET 9+ we need to make sure that this file is included before 'ResolveStaticWebAssetsInputs' |
| 78 | + --> |
| 79 | + <ItemGroup> |
| 80 | + <!-- Removes old build cached file reference --> |
| 81 | + <Content Remove="$(TailwindOutputCssFile)"/> |
| 82 | + |
| 83 | + <Content Include="$(TailwindOutputCssFile)" |
| 84 | + CopyToPublishDirectory="Always"/> |
35 | 85 | </ItemGroup> |
36 | 86 | </Target> |
37 | 87 |
|
38 | | - <!--Create Tailwind configuration props file--> |
39 | | - <Target Name="WriteTailwindConfiguration" AfterTargets="SetupExecutableTask" DependsOnTargets="SetupExecutableTask"> |
| 88 | + <ItemGroup Condition="'$(TailwindExcludeInputFileOnPublish)' == 'true'"> |
| 89 | + <Content Remove="$(TailwindInputCssFile)" CopyToPublishDirectory="Never"/> |
| 90 | + <None Remove="$(TailwindInputCssFile)" CopyToPublishDirectory="Never"/> |
| 91 | + </ItemGroup> |
| 92 | + |
| 93 | + <!--Create Tailwind.Hosting configuration file--> |
| 94 | + <Target Name="TailwindWriteHostingConfig" |
| 95 | + AfterTargets="Build" |
| 96 | + DependsOnTargets="$(TailwindWriteHostingConfigDependsOn)"> |
40 | 97 | <PropertyGroup Label="Tailwind.Hosting Json Config File Properties"> |
41 | 98 | <_TailwindBaseWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)'))</_TailwindBaseWorkingDirectory> |
42 | 99 | <_TailwindWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)').Replace('\','\\'))</_TailwindWorkingDirectory> |
|
68 | 125 | </ItemGroup> |
69 | 126 | </Target> |
70 | 127 |
|
71 | | - <!-- Generates a minified output on publish --> |
72 | | - <Target Name="GenerateMinifiedTailwindOutput" |
73 | | - AfterTargets="ComputeFilesToPublish" |
74 | | - Condition="Exists('$(_TailwindExecutablePath)') AND '$(TailwindMinifyOnPublish)' == 'true'" |
75 | | - DependsOnTargets="SetupExecutableTask"> |
76 | | - <PropertyGroup Label="Tailwind.Hosting Generation Properties"> |
77 | | - <_TailwindBaseWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)'))</_TailwindBaseWorkingDirectory> |
78 | | - <_TailwindWorkingDirectory>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(TailwindWorkingDirectory)'))</_TailwindWorkingDirectory> |
79 | | - <_TailwindExecutablePath>$([System.IO.Path]::Combine('$(_TailwindExecutablePath)'))</_TailwindExecutablePath> |
80 | | - <_TailwindInputCssFile>$([System.IO.Path]::Combine('$(_TailwindBaseWorkingDirectory)', '$(TailwindInputCssFile)'))</_TailwindInputCssFile> |
81 | | - <_TailwindOutputCssFile>$([System.IO.Path]::Combine('$(OutputPath)', '$(TailwindOutputCssFile)'))</_TailwindOutputCssFile> |
82 | | - <_TailwindTailwindConfigFile>$([System.IO.Path]::Combine('$(_TailwindBaseWorkingDirectory)', '$(TailwindConfigFile)'))</_TailwindTailwindConfigFile> |
83 | | - |
84 | | - <_TailwindGenerateCommand>$(_TailwindExecutablePath) -m -c $(_TailwindTailwindConfigFile) -i $(_TailwindInputCssFile) -o $(_TailwindOutputCssFile)</_TailwindGenerateCommand> |
85 | | - </PropertyGroup> |
86 | | - |
87 | | - <Exec Command="$(_TailwindGenerateCommand)" WorkingDirectory="$(_TailwindBaseWorkingDirectory)"/> |
88 | | - |
89 | | - <ItemGroup> |
90 | | - <ResolvedFileToPublish Include="$(_TailwindOutputCssFile)"> |
91 | | - <RelativePath>$(TailwindOutputCssFile)</RelativePath> |
92 | | - <CopyToPublishDirectory>Always</CopyToPublishDirectory> |
93 | | - <ExcludeFromSingleFile>false</ExcludeFromSingleFile> |
94 | | - </ResolvedFileToPublish> |
95 | | - </ItemGroup> |
96 | | - </Target> |
97 | | - |
98 | | - <ItemGroup Condition="'$(TailwindExcludeInputFileOnPublish)' == 'true'"> |
99 | | - <Content Remove="$(TailwindInputCssFile)" CopyToPublishDirectory="Never"/> |
100 | | - <None Remove="$(TailwindInputCssFile)" CopyToPublishDirectory="Never"/> |
101 | | - </ItemGroup> |
102 | | - |
103 | 128 | <!--The generated file is deleted after a general clean. It will force the regeneration on rebuild--> |
104 | | - <Target Name="AfterClean"> |
| 129 | + <Target Name="_TailwindClean" AfterTargets="Clean"> |
105 | 130 | <ItemGroup> |
106 | 131 | <TailwindFilesToDelete Include="$(OutputPath)tailwind*"/> |
107 | 132 | </ItemGroup> |
|
0 commit comments