2012-07-11 12 views
7

Z powodu określonej konfiguracji chciałbym podzielić skompilowane arkusze stylów w dwóch plikach. Dzieje się tak dlatego, że (część) CSS jest potrzebna dla aplikacji Java, która może parsować CSS, ale jest trochę błędna i nie radzi sobie z jakimś css- (hack) -syntax. Ponieważ nie mogę zmodyfikować tej aplikacji Java, chcę ją podać tylko dla potrzebnego CSS, z którego mogę się upewnić, że jest poprawna.Pipsy zasobów Rails: kompilacja do wielu arkuszy stylów

Normalnie, potok zasobów wygenerowałby tylko jeden plik "/assets/application-[..].css". Pozwoli to również wygenerować "/assets/custom-[..].css", w oparciu o wybrany przeze mnie plik. To nadal może być wstępnie skompilowane.

Czy istnieje sposób, aby to zrobić? Chociaż rozumiem, że to nie jest idealna konfiguracja ..

Odpowiedz

12

Aby poinformować szyny o dodatkowych plikach, które mają zostać wstępnie skompilowane, można je dodać do ustawienia config.assets.precompile.

config.assets.precompile += ["other_application.css"] 

Widzisz tylko application.css w HTML, ponieważ jest to tylko plik jesteś tym

<%= stylesheet_link_tag "application" %> 

Jeśli masz jakiś custom.css.scss w katalogu apps/assets/stylesheets, zostanie skompilowany jak application.css.

Na przykład może mam

- _common.css.scss 
- application.css.erb.scss 
- other_application.css.erb.scss 

w app/assets/stylesheets. W górnej części plików bez części wstawię

, aby dołączyć _common.css.scss. Mogę teraz odwoływać się do arkusza stylów niezależnie od siebie w układzie.

<%= stylesheet_link_tag "application" %> 
# or 
<%= stylesheet_link_tag "other_application" %> 
+0

Dziękuję za odpowiedź, ale niestety nie mogę jej uruchomić. Kiedy dołączam plik _common.css.scss do/app/assets/stylesheets, nie pojawia się on jako skompilowany plik (do przeglądania plików używam Heroku i konsoli Heroku). Ponadto plik application.css traktowany jest jako plik manifestu. plik other_application.css nie jest kompilowany, nawet jeśli odwołuję się do niego za pomocą stylesheet_link_tag. --update-- Aby udostępnić plik other_application.css, potrzebowałem go do dodania do pliku config.assets.precompile + =% w (other_application.css) w production.rb – Roemer

+0

Dzięki, zaktualizowałem swoją odpowiedź. Sprawdziłem dwukrotnie kod aplikacji i zdałem sobie sprawę, że mam plik 'config.assets.precompile' ustawiony na glob, który pobiera wszystkie pliki z' app/assets/stylesheets', które nie są poprzedzone '_'. Przepraszam za zamieszanie; to, co powiedziałem w mojej odpowiedzi, dotyczy tylko moich aplikacji :) – deefour

+0

Warto również podkreślić, że to samo ustawienie jest używane do plików JS, aby uzyskać dodatkowe pliki, takie jak 'application.js', aby wstępnie skompilować – deefour

Powiązane problemy