2012-11-15 6 views
9

Mam nadzieję, że nie będę tworzyć powielonego tematu, ale szukałem przez dwa dni i nie mogę znaleźć rozwiązania tego problemu.Dotless - Nie można odwołać się do mniejszej zmiennej w oddzielnym pliku z pakietowaniem MVC

Rozpoczynamy nowy projekt w MVC4 i mamy mniejszą wersję bootstrap załadowany. Problem, na który napotykam, to próba odwołania się do niektórych klas lub zmiennych w bootstrap.less, my global.less lub jakiejkolwiek rzeczy poza bieżącym plikiem. Mogę utworzyć zmienną w górnej części bieżącego pliku i używać go dobrze, ale jeśli chcę użyć czegoś z osobnego pliku, muszę to zrobić pod @import. Byłoby dobrze, gdyby cała moja aplikacja była w jednym pliku, ale musiałbym zaimportować 4+ plików do każdej tworzonej przeze mnie sekcji/sekcji.

dodałem MVC4 Bundling dodatek z https://gist.github.com/2002958

Kwestia, jak go widzę, jest to, że każdy plik jest analizowany i konwertowany do css niezależnie. Próbowałem uprościć proces i zbudować ogromny mniej ciąg ze wszystkich plików w mniejszym wiązki, a następnie konwertować je (Less.Parse(lessString)), ale dostaję błąd:

"You are importing a file ending in .less that cannot be found"

Więc tutaj jest mój ostateczny pytanie: Czy istnieje sposób, aby po prostu parsować mniej ciągów bez odwoływania się do fizycznego pliku? To rozwiązałoby mój problem.

Jeśli nie jest to możliwe z jakiegoś dziwnego powodu, czy istnieje już komponent lub proces, o których nie wiem, a które łączą pliki przed ich zminimalizowaniem?

Każde światło na ten temat byłoby docenione, gdy kręcę się w kółko, próbując uruchomić to.

To pytanie zostało również opublikowane w grupie bez kropki:
https://groups.google.com/forum/?fromgroups#!topic/dotless/j-8OP1dNjUY

+0

znalazłeś rozwiązanie tego? –

+0

Niestety, nigdy tego nie zrobiłem. Poświęciłem temu więcej czasu, niż myślałem, i ruszyłem dalej. Nie mając rozwiązania tego problemu, nie użyłem mniej w moich ostatnich kilku projektach. To po prostu nie wydaje się być realną opcją dla moich potrzeb. – Difinity

Odpowiedz

3

to sollution pracuje dla mnie:
mam dwa pakiety Nuget:
dotless
dotless adapter for system.web.optimization

w web.config mam tej linii

<configuration> 
    <configSections> 
     <section name="dotless" type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" /> 
    </configSections> 
    <system.web> 
     <httpHandlers> 
      <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" /> 
     </httpHandlers> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers> 
      <add name="dotless" path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" /> 
     </handlers> 
    </system.webServer> 
    <dotless minifyCss="true" cache="true" web="false" disableParameters="true" /> 
</configuration> 

pamiętać, że należy zdefiniować bezbłędne params według twoich potrzeb.

w BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new LessBundle("~/bundles/styles/").Include(
     "~/Content/site.less" 
    )); 
    BundleTable.EnableOptimizations = True; //false if you want to debug css 
} 

i finaly Site.less

/*i have to redefine some bootstrap mixin and variables, so importing bootstrap and extending happings there*/ 
@import "bootstrap-extends.less"; 

/* all other needed less should be included here too 
    for example: 
    @import "admin.less"; 
    @import "controls.less"; 
    etc 
*/ 

body{ 

} 

site.less i bootstrap-extends.less są wewnątrz folderu Content.
bootstrap-extends posiada wszystkie potrzebne wskazówki @import które są przeważnie wymienione w ~/Content/bootstrap/bootstrap.less

mam nadzieję, że to pomaga

Powiązane problemy