Quelle est la meilleure méthode pour stocker les feuilles CSS générées par SASS dans votre application et le contrôle de source?

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

  •  01-07-2019
  •  | 
  •  

Question

Si vous utilisez HAML et SASS dans votre application Rails, tous les modèles que vous définissez dans public / stylesheet / *. sass seront compilés dans des feuilles de style * .css. À partir de votre code, vous utilisez stylesheet_link_tag pour extraire l'actif par nom sans avoir à vous soucier de l'extension.

Beaucoup de gens n'aiment pas stocker le code généré ou le code compilé dans le contrôle de version, et il va sans dire que le répertoire public / ne devrait pas contenir d'éléments que vous n'avez pas envoyés au navigateur.

Quel est le meilleur modèle à suivre lors de la mise en place de ressources SASS dans votre projet Rails?

Était-ce utile?

La solution

Je mets toujours la version de toutes les feuilles de style dans "public / stylesheets / sass / *. sass". et configurez un filtre d'exclusion pour les compilés:

/public/stylesheets/*.css

Autres conseils

Le cadre compass recommande de placer vos feuilles de style sass sous app / stylesheets et vos css compilés en public / feuilles de style / compilées.

Vous pouvez le configurer en ajoutant le code suivant à votre environment.rb:

Sass::Plugin.options[:template_location] = {
  "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}

Si vous utilisez le framework Compas, il configure cette configuration pour vous lors de son installation.

Honnêtement, j'aime bien avoir mes feuilles de style SASS compilées dans le contrôle de version. Ils sont petits, ne changent que lorsque vos fichiers .sass changent, et leur déploiement avec le reste de votre application évite au compilateur SASS de se lancer en production.

L’autre avantage (bien que petit) est que si vous n’utilisez pas la mise en cache des pages, votre processus rails n’a pas besoin d’un accès en écriture à votre répertoire public_html . Il y a donc une manière de moins qu'un exploit de votre serveur peut être diabolique.

Un peu en rapport, mais c’est une bonne idée de régénérer vos CSS lors de vos déploiements capistrano. Ce point de rappel fait justement cela:

after "deploy:update_code" do
  rails_env = fetch(:rails_env, "production")
  run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end

Mise à jour : cela ne devrait plus être nécessaire avec les versions modernes de Haml / Sass.

Si je peux le gérer, j'aime stocker tous mes styles dans des modèles SASS lorsque je choisis HAML / SASS pour un projet et je supprimerai application.css et scaffold.css. Ensuite, je vais mettre SASS dans public / stylesheets / sass et ajouter /public/stylesheets/*.css à .gitignore.

Si je dois utiliser une combinaison d’actifs SASS et CSS, c’est un peu plus compliqué. Le moyen le plus simple de gérer cela consiste à avoir un sous-répertoire de sortie pour CSS généré dans le répertoire stylesheets, puis à exclure ce sous-répertoire dans .gitignore. Ensuite, dans vos vues, vous devez savoir quel type de style vous utilisez (SASS ou CSS) car vous devez sélectionner la feuille de style public / stylesheets / foo ou la feuille de style public / stylesheets / sass-out / foo.

Si vous devez emprunter la deuxième route, créez un assistant pour extraire le sous-répertoire sass-out.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top