Qual è il metodo migliore per archiviare i CSS generati da SASS nella tua applicazione e nel controllo del codice sorgente?

StackOverflow https://stackoverflow.com/questions/86018

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top