Каков наилучший метод хранения CSS-кода, сгенерированного SASS, в вашем приложении и системе управления версиями?
-
01-07-2019 - |
Вопрос
Если вы используете HAML и SASS в своем приложении Rails, то любые шаблоны, которые вы определяете в public/stylesheet/*.sass, будут скомпилированы в таблицы стилей *.css.Из вашего кода вы используете stylesheet_link_tag для извлечения ресурса по имени, не беспокоясь о расширении.
Многим людям не нравится хранить сгенерированный или скомпилированный код в системе управления версиями, и также само собой разумеется, что public/ directory не должен содержать элементы, которые вы не отправляете в браузер.
Какому шаблону лучше всего следовать при размещении ресурсов SASS в вашем проекте Rails?
Решение
Я всегда обновляю все таблицы стилей в "public /stylesheets/sass / *.sass" и настраиваю фильтр исключения для скомпилированных:
/public/stylesheets/*.css
Другие советы
Тот Самый компас framework рекомендует размещать ваши таблицы стилей sass в app/stylesheets, а ваш скомпилированный css - в public/stylesheets/compiled.
Вы можете настроить это, добавив следующий код в свою среду.rb:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
Если вы используете платформу compass framework, она настроит эту конфигурацию для вас при ее установке.
Честно говоря, мне нравится иметь мои скомпилированные таблицы стилей SASS в системе управления версиями.Они небольшие, меняются только при изменении ваших файлов .sass, и их развертывание вместе с остальной частью вашего приложения означает, что компилятору SASS никогда не нужно запускать в рабочей среде.
Другим преимуществом (хотя и небольшим) является то, что если вы не используете кэширование страниц, вашему процессу rails не нужно иметь доступ на запись к вашему public_html
справочник.Таким образом, есть еще один способ, которым эксплойт вашего сервера может быть вредоносным.
Это несколько связано, но это хорошая идея - регенерировать ваш CSS во время развертывания capistrano.Этот хук обратного вызова делает именно это:
after "deploy:update_code" do
rails_env = fetch(:rails_env, "production")
run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end
Обновить:В современных версиях Haml / Sass в этом больше не должно быть необходимости.
Если я смогу с этим справиться, мне хотелось бы сохранить все мои стили в шаблонах SASS, когда я выбираю HAML / SASS для проекта, и я удалю application.css и scaffold.css.Затем я помещу SASS в public/stylesheets/sass и добавлю /public/stylesheets/*.css в .gitignore.
Если мне приходится работать с комбинацией ресурсов на основе SASS и CSS, это немного сложнее.Самый простой способ справиться с этим - создать выходной подкаталог для сгенерированного CSS в каталоге stylesheets, затем исключить этот подкаталог в .gitignore .Затем в своих представлениях вы должны знать, какой тип стиля вы используете (SASS или CSS), поскольку вам нужно выбрать public /stylesheets /foo stylesheet или public /stylesheets /sass-out / foo stylesheet.
Если вам нужно пойти вторым путем, создайте помощника, который абстрагирует подкаталог sass-out.