Каков наилучший метод хранения CSS-кода, сгенерированного SASS, в вашем приложении и системе управления версиями?

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top