Simply add Tailwind.targets to your project with the following line.
<Import Project="Tailwind.targets" />
The scripts will look for any .css files in a Styles/ root folder of your project, and add them to the static assets during build.
| { | |
| "private": true, | |
| "devDependencies": { | |
| "tailwindcss": "^3.4.7" | |
| } | |
| } |
| <Project> | |
| <Target Name="RestoreNpm" Condition="!Exists('node_modules')"> | |
| <Exec Command="npm install" /> | |
| </Target> | |
| <Target Name="ResolveTailwindAssetOutputs"> | |
| <ItemGroup> | |
| <_TailwindAsset Include="@(None)" Condition="'%(Extension)' == '.css' And $([System.String]::Copy('%(RecursiveDir)').StartsWith('Styles\'))"> | |
| <OutputFile>$(IntermediateOutputPath)%(RecursiveDir)%(FileName)%(Extension)</OutputFile> | |
| </_TailwindAsset> | |
| </ItemGroup> | |
| <ItemGroup> | |
| <UpToDateCheckInput Include="tailwind.config.js" Set="Css" /> | |
| <UpToDateCheckInput Include="%(_TailwindAsset.Identity)" Set="Css" /> | |
| <UpToDateCheckBuilt Include="%(_TailwindAsset.OutputFile)" Original="%(_TailwindAsset.Identity)" Set="Css" /> | |
| </ItemGroup> | |
| </Target> | |
| <Target Name="BuildTailwindAssets" DependsOnTargets="ResolveTailwindAssetOutputs" Inputs="@(_TailwindAsset)" Outputs="%(OutputFile)"> | |
| <Exec Command="npx tailwindcss -i @(_TailwindAsset) -o %(OutputFile)" Condition="'$(Optimize)' == 'false'" /> | |
| <Exec Command="npx tailwindcss -i @(_TailwindAsset) -o %(OutputFile) --minify" Condition="'$(Optimize)' == 'true'" /> | |
| <ItemGroup> | |
| <FileWrites Include="%(_TailwindAsset.OutputFile)" /> | |
| </ItemGroup> | |
| </Target> | |
| <Target Name="ResolveTailwindStaticWebAsset" Condition="'$(NoBuild)' != 'true'" | |
| BeforeTargets="AssignTargetPaths" | |
| DependsOnTargets="ResolveStaticWebAssetsConfiguration;BuildTailwindAssets"> | |
| <DiscoverStaticWebAssets | |
| Candidates="%(_TailwindAsset.OutputFile)" | |
| SourceId="$(PackageId)" | |
| Pattern="$(IntermediateOutputPath)styles/**" | |
| ContentRoot="$(IntermediateOutputPath)styles/" | |
| BasePath="$(StaticWebAssetBasePath)" | |
| AssetMergeSource="$(StaticWebAssetMergeTarget)" | |
| > | |
| <Output TaskParameter="DiscoveredStaticWebAssets" ItemName="StaticWebAsset" /> | |
| </DiscoverStaticWebAssets> | |
| </Target> | |
| </Project> |