2012-07-11 17 views
7

Debido a una configuración específica, me gustaría dividir las hojas de estilo compiladas en dos archivos. Esto se debe a que (una parte de) el CSS es necesaria para una aplicación Java que puede analizar el CSS, pero tiene un poco de errores y no puede manejar css- (hack) -syntax. Debido a que no puedo modificar esta aplicación Java, quiero alimentarla solo con el CSS que necesita y de la que puedo asegurarme de que sea correcta.Rails asset pipleline: compilar en varias hojas de estilo

Por lo tanto, normalmente la canalización de activos produciría solo un archivo '/assets/application-[..].css'. Sería permitir que también genere '/assets/custom-[..].css', en función de una selección de archivos que realice. Esto aún puede ser precompilado.

¿Hay alguna manera de hacerlo? Aunque entiendo que esta no es la configuración ideal ...

Respuesta

12

Para indicar los raíles sobre los archivos adicionales que desea precompilar, puede agregarlos a la configuración config.assets.precompile.

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

Sólo ves application.css en el código HTML, ya que es el único archivo que está incluida

<%= stylesheet_link_tag "application" %> 

Si tiene alguna custom.css.scss en su directorio apps/assets/stylesheets, se compilará como application.css.

Por ejemplo, podría tener

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

en app/assets/stylesheets. En la parte superior de los archivos que no son parciales pondré

@import "common"; 

para incluir _common.css.scss. Ahora puedo hacer referencia a cualquiera de las hojas de estilo independientes entre sí en un diseño.

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

Gracias por su respuesta, pero desafortunadamente no puedo hacer que funcione. Cuando incluyo un archivo _common.css.scss en/app/assets/stylesheets, no aparece como un archivo compilado (utilizo Heroku y la consola Heroku para buscar los archivos). Además, solo application.css se trata como un archivo de manifiesto. other_application.css no se compila, incluso si me refiero a él usando stylesheet_link_tag. --update-- Para hacer que other_application.css esté disponible lo necesité para agregarlo a config.assets.precompile + =% w (other_application.css) en production.rb – Roemer

+0

Gracias, he actualizado mi respuesta. Comprobé dos veces el código de mi aplicación y me di cuenta de que tenía 'config.assets.precompile' establecido con un comodín que toma todos los archivos de' app/assets/stylesheets' que no tienen el prefijo '_'. Perdón por la confusion; lo que dije en mi respuesta originalmente es cierto solo para mis aplicaciones :) – deefour

+0

También vale la pena señalar, esta misma configuración se usa para sus archivos JS, para obtener archivos adicionales como 'application.js' para precompilar – deefour

Cuestiones relacionadas