Ich habe mich vor einem seltsamen Verhalten der assets:precompile
-Aufgabe wiedergefunden, oder zumindest vor etwas, was ich nicht ganz verstehe.
Also, ich benutze Rails 3.1.3, Sprockets 2.0.3, weniger 2.0.11 für meine Webanwendung, und ich verlasse mich auf Bootstrap für das Layout, also benutze ich auch weniger Schienen 2.1.8 und weniger. rails-bootstrap 2.0.8. Ich habe den Stil wie hier angepasst.
Die Konfiguration meiner Assets lautet:
%Vor%In application.css.scss mache ich
%Vor%Und in Custom-Style mache ich
%Vor% Schließlich in buttons.less
Ich benutze einige Variablen und Mixins, die in den variables.less
und mixins.less
Bootstrap Dateien definiert sind, @white
und .buttonBackground
, um spezifischer zu sein.
Wenn ich bundle exec rake assets:precompile
mit der obigen Konfiguration starte, schlägt die Aufgabe fehl und ich erhalte diesen Fehler:
Aber wenn ich das tue, ändert sich
%Vor%Alles funktioniert gut !!
Hat es etwas mit dem Umfang weniger Variablen und Funktionen zu tun, wenn mit verschachtelten Importen gearbeitet wird? Oder etwas, das mit der Reihenfolge zu tun hat, die weniger Parser oder Sprockets, verarbeitet die Import-Struktur?
Vermisse ich etwas oder mache etwas falsch?
Danke:)
Hinweis: Ich erhalte den Fehler selbst bei den ursprünglichen Variablen und Mixins-Dateien, so dass er nicht mit den Überschreibungen verbunden ist, die an ihnen vorgenommen wurden.
Ich kann mir gerade eine von zwei Möglichkeiten vorstellen:
1) Sie sollten application.css.scss in application.css.less ändern und verwenden:
@import "custom-style";
anstelle der Kettenräder //= require ...
2) Der LESS-Compiler ist sehr flink bezüglich seiner Semikola. Ich habe bemerkt, dass du es getan hast
@import "custom-style/buttons"
- es sollte @import "custom-style/buttons";
Weiß nicht, ob das Problem wirklich so einfach ist, aber es ist ein Anfang.
Haben Sie versucht, die Datei in buttons.css.less
umzubenennen, aber die Erweiterung vom @import (d. h. @import "buttons"
) zu entfernen?
So mache ich es mit SCSS und es funktioniert gut.
Ein weiterer Gedanke ist, das //=require custom-style
in application.css.less durch eine @import "custom-style"
-Direktive zu ersetzen. Das Schienenhandbuch hier empfiehlt die Verwendung von @import
(das mit SCSS / LESS verarbeitet wird). sind über //=require
(was mit Kettenrädern verarbeitet wird):
Wenn Sie mehrere Sass-Dateien verwenden möchten, sollten Sie die Regel Sass @ import anstelle dieser Anweisungen von Sprockets verwenden. Mit den Direktiven von Sprockets sind alle Sass-Dateien in ihrem eigenen Bereich vorhanden, sodass Variablen oder Mixins nur innerhalb des Dokuments verfügbar sind, in dem sie definiert wurden.
Das beantwortet deine Frage nicht wirklich, aber ist der einzige Grund, warum du sass und weniger twitter Bootstrap verwendest? Wenn Sie es vorziehen, nur sass zu verwenden, gibt es einige Bootstrap-Edelsteine, bei denen die Autoren die weniger in scss konvertieren, wie bootstrap-sass . Bevor ich zu viel Zeit verschwendet habe, um beide in einem Projekt zu jonglieren, würde ich mir das eine oder andere kaufen, aber das ist nur meine Meinung.
Tags und Links ruby-on-rails less twitter-bootstrap sprockets