2012-07-11 22 views
7

A causa di una configurazione specifica, vorrei suddividere i fogli di stile compilati in due file. Questo perché (una parte) del CSS è necessario per un'applicazione Java in grado di analizzare il CSS, ma è un po 'buggato e non può gestire un css- (hack) -sintassi. Poiché non riesco a modificare questa applicazione Java, desidero alimentarla solo con il CSS di cui ha bisogno e di cui posso assicurarmi che sia corretto.Pipeline linee di rails: compila su più fogli di stile

Quindi, normalmente la pipeline delle risorse produrrebbe solo un file "/assets/application-[..].css". Dovrebbe anche generare '/assets/custom-[..].css', basato su una selezione di file che faccio. Questo può ancora essere precompilato.

C'è un modo per farlo? Anche se capisco che questa non è la configurazione ideale ..

risposta

12

Per informare i binari sui file aggiuntivi che si desidera precompilare, è possibile aggiungerli all'impostazione config.assets.precompile.

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

Basta vedere application.css nel codice HTML, perché questo è l'unico file che si sta includendo

<%= stylesheet_link_tag "application" %> 

Se avete qualche custom.css.scss nella directory apps/assets/stylesheets, verrà compilato come application.css.

Per esempio, potrei avere

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

in app/assets/stylesheets. Nella parte superiore del file non-parziali Porrò

@import "common"; 

per includere _common.css.scss. Ora posso fare riferimento a entrambi i fogli di stile indipendenti l'uno dall'altro in un layout.

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

Grazie per la risposta, ma sfortunatamente non riesco a farlo funzionare. Quando includo un file _common.css.scss in/app/assets/stylesheet, non appare come un file compilato (utilizzo Heroku e la console di Heroku per sfogliare i file). Inoltre, solo application.css viene trattato come un file manifest. other_application.css non viene compilato, anche se mi riferisco ad esso usando stylesheet_link_tag. --update-- Per rendere disponibile other_application.css, ne avevo bisogno per aggiungerlo a config.assets.precompile + =% w (other_application.css) in production.rb – Roemer

+0

Grazie, ho aggiornato la mia risposta. Ho ricontrollato il mio codice applicativo e ho realizzato che avevo "config.assets.precompile" impostato con un glob che catturava tutti i file da "app/assets/stylesheets" non preceduti da '_'. Dispiace per la confusione; ciò che avevo dichiarato nella mia risposta originariamente è vero solo per le mie applicazioni :) – deefour

+0

Inoltre, vale la pena sottolineare che questa stessa impostazione viene utilizzata per i file JS, per ottenere file aggiuntivi come 'application.js' da precompilare – deefour

Problemi correlati