Oto rozwiązanie, które wymyśliłem, używając MSBuild. Jest to przyrostowe, więc powinno się to zdarzyć tylko wtedy, gdy mniej się zmieni. Poprawnie obsługuje także @import
.
Po pierwsze, dodaj dotless do swojego projektu z NuGet. Nie potrzebujesz żadnej magii, którą dodaje ona do twojego web.config
, więc możesz to zmienić - po prostu używasz go, aby uzyskać wykonywalny kompilator.
Następnie dodaj swoje "roota" mniej pliki do .csproj
, tak:
<ItemGroup>
<LessCssRootInput Include="example.less" />
</ItemGroup>
Wreszcie dodać ten fragment na dole .csproj
:
<ItemGroup>
<LessCssSubInput Include="**\*.less" Exclude="@(LessCssRootInput)" />
<LessCssOutput Include="@(LessCssRootInput -> '%(RelativeDir)\%(Filename).css')" />
</ItemGroup>
<Target Name="CompileLessCss" BeforeTargets="Compile" Inputs="@(LessCssRootInput);@(LessCssSubInput)" Outputs="@(LessCssOutput)">
<Exec Command=""$(SolutionDir)\packages\dotless.1.3.1.0\tool\dotless.compiler.exe" --minify --keep-first-comment @(LessCssRootInput)" />
</Target>
ALL IN ONE LINE jest bardzo ważne, w przeciwnym razie pojawi się błąd MS Build. Komenda oparta na gównie -1. – Sakthivel
Jeśli chodzi o możliwość przenoszenia: nie zapomnij zamknąć każdego parametru polecenia w cudzysłowie, ponieważ zadania budowania są wykonywane jako plik wsadowy, a partia nie może obsługiwać spacji w nazwach katalogów. Przykład: '" $ (ProjectDir) .. \ .. \ .. \ .. \ lib \ dotless \ tool \ dotless.compiler.exe "" $ (ProjectDir) Style \ Home.less "" $ (ProjectDir) Style \ Home.css "' – ViRuSTriNiTy