Qual é o melhor método para armazenar SASS CSS gerado em seu controle de aplicação e fonte?

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

  •  01-07-2019
  •  | 
  •  

Pergunta

Se você estiver usando HAML e SASS em sua aplicação Rails, então quaisquer modelos que você definir em público / estilo / *. Sass serão compilados em estilo * .css. Do seu código, você usa stylesheet_link_tag para puxar o ativo pelo nome sem ter que se preocupar com a extensão.

Muitas pessoas não gostam de armazenamento de código gerado ou código compilado no controle de versão, e é também lógico que o público / diretório não deve conter elementos que você não enviar para o navegador.

O que é o melhor padrão a seguir ao colocar para fora os recursos SASS no seu projeto Rails?

Foi útil?

Solução

Eu sempre versão todas as folhas de estilo em "public / estilo / sass / * sass." E configurar um filtro de exclusão para aqueles compilados:

/public/stylesheets/*.css

Outras dicas

O quadro bússola recomenda colocar as folhas de estilo Sass sob app / folhas de estilo e seu css compilado em / public stylesheets / compilado.

Você pode configurar isso adicionando o seguinte código ao seu environment.rb:

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

Se você usar a estrutura da bússola, ele define-se esta configuração para você quando você instalá-lo.

Honestamente, eu gosto de ter minhas folhas de estilo SASS compilados no controle de versão. Eles são pequenos, só mudam quando seu .sass mudança arquivos, e tê-los implantar com o resto da sua aplicação significa o compilador SASS não precisar fogo em produção.

A outra vantagem (ainda que pequena) é que se você não está usando o cache de página, o seu processo de trilhos não precisa ter acesso de gravação para o seu diretório public_html. Portanto, há um a menos maneira um exploit do seu servidor pode ser mau.

Um pouco relacionado, mas é uma boa idéia para regenerar o seu CSS durante as implantações de Capistrano. Este gancho de callback faz exatamente isso:

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

Atualizar :. Isso deve deixar de ser necessário com versões modernas de Haml / Sass

Se eu posso controlá-lo, eu gostaria de armazenar todos os meus estilos em modelos SASS quando eu escolher HAML / SASS para um projeto, e eu vou remover application.css e scaffold.css. Então eu vou colocar SASS em público / estilo / sass, e adicionar /public/stylesheets/*.css para .gitignore.

Se eu tiver que trabalhar com uma combinação de SASS e ativos CSS base, é um pouco mais complicado. A maneira mais simples de lidar com isso é ter um subdiretório de saída para CSS gerado dentro do diretório de estilo, em seguida, excluir esse subdiretório no .gitignore. Então, em seus pontos de vista que você tem que saber qual estilo de tipo que você está usando (SASS ou CSS) em virtude de ter para selecionar o / estilo / estilo foo público ou o / estilo / / estilo foo sass-out público.

Se você tem que ir a segunda rota, construir um ajudante para abstrair o subdiretório sass-out.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top