Qual è il metodo migliore per archiviare i CSS generati da SASS nella tua applicazione e nel controllo del codice sorgente?
-
01-07-2019 - |
Domanda
Se utilizzi HAML e SASS nella tua applicazione Rails, tutti i modelli che definisci in public/stylesheet/*.sass verranno compilati in fogli di stile *.css.Dal tuo codice, utilizzi stylesheet_link_tag per inserire la risorsa per nome senza doversi preoccupare dell'estensione.
A molte persone non piace memorizzare il codice generato o compilato nel controllo della versione, ed è anche ovvio che la directory public/ non dovrebbe contenere elementi che non si inviano al browser.
Qual è il modello migliore da seguire quando si distribuiscono le risorse SASS nel progetto Rails?
Soluzione
Versione sempre tutti i fogli di stile in "public/stylesheets/sass/*.sass" e imposta un filtro di esclusione per quelli compilati:
/public/stylesheets/*.css
Altri suggerimenti
IL bussola framework consiglia di inserire i tuoi fogli di stile Sass in app/stylesheets e il tuo css compilato in public/stylesheets/compiled.
Puoi configurarlo aggiungendo il seguente codice al tuo ambiente.rb:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
Se utilizzi il framework compass, imposta questa configurazione per te quando lo installi.
Onestamente, mi piace avere i miei fogli di stile SASS compilati nel controllo della versione.Sono piccoli, cambiano solo quando cambiano i tuoi file .sass e averli distribuiti con il resto della tua app significa che il compilatore SASS non ha mai bisogno di attivarsi in produzione.
L'altro vantaggio (anche se piccolo) è che se non stai utilizzando la memorizzazione nella cache delle pagine, il tuo processo rail non ha bisogno di avere accesso in scrittura al tuo public_html
directory.Quindi c'è un modo in meno in cui un exploit del tuo server può essere dannoso.
Un po' correlato, ma è una buona idea rigenerare il tuo CSS durante le distribuzioni capistrano.Questo hook di callback fa proprio questo:
after "deploy:update_code" do
rails_env = fetch(:rails_env, "production")
run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end
Aggiornamento:Ciò non dovrebbe più essere necessario con le versioni moderne di Haml/Sass.
Se riesco a gestirlo, mi piace memorizzare tutti i miei stili nei modelli SASS quando scelgo HAML/SASS per un progetto e rimuoverò application.css e scaffold.css.Quindi inserirò SASS in public/stylesheets/sass e aggiungerò /public/stylesheets/*.css a .gitignore.
Se devo lavorare con una combinazione di risorse basate su SASS e CSS, è un po' più complicato.Il modo più semplice per gestire questo problema è avere una sottodirectory di output per i CSS generati all'interno della directory dei fogli di stile, quindi escludere quella sottodirectory in .gitignore.Quindi, nelle tue visualizzazioni devi sapere quale tipo di stile stai utilizzando (SASS o CSS) in quanto devi selezionare il foglio di stile public/stylesheets/foo o il foglio di stile public/stylesheets/sass-out/foo.
Se devi seguire la seconda strada, crea un helper per eliminare la sottodirectory sass-out.