Создайте задачу rake для компиляции файла SASS, который импортируется из драгоценного камня.

Я хотел бы создать задачу rake, которая компилирует некоторые файлы SASS, которые ссылаются на @import в драгоценных камнях, чтобы ускорить мой рабочий процесс разработки.

Небольшая предыстория

Недавно мы добавили новую тему в наше приложение rails, и таблицы стилей sass действительно тормозят конвейер ресурсов в среде разработки (вплоть до того, что часто вызывают тайм-ауты).

Тема в значительной степени зависит от импорта и миксинов, которые было бы очень утомительно пытаться вручную преобразовать в файлы, которые мы могли бы просто *= require, как предлагают некоторые руководства.

Файлы относительно статичны, поэтому нет особых причин, по которым их нужно компилировать при каждом запросе, НО у меня есть другие активы, над которыми я часто работаю, поэтому я бы предпочел не полагаться на rake assets:precompile)

Все темы включены в один файл (theme/base.scss), который @import содержит все остальные, поэтому я подумал, что простым решением будет взять этот файл из application.css и создать задачу rake theme:precompile, которая компилирует его в theme.css, который затем требуется application.css

Таким образом, если нам нужно настроить файл темы, мы можем обновить его и запустить задачу rake, а затем в конвейере ресурсов будет просто простой статический файл css для работы.

Сначала я попытался настроить файл rake, который просто вызывает sass.

desc 'Precompile the theme SASS to save on development time'
task :precompile do |t, args|
  dir = 'app/assets/stylesheets/'
  source = 'theme/base.scss'
  dest = 'theme.css'

  source_path = dir + src
  dest_path = dir + dst
  puts "Precomipling #{source_path} to #{dest} ..."

  `sass "#{source_path}" "#{dest_path}"`
end

но это не удалось, потому что тема основана на драгоценном камне bootstrap-sass, что дает

Error: File to import not found or unreadable: bootstrap-sprockets.

Итак, похоже, что моя задача rake должна загрузить всю среду sprockets или иначе выяснить, как сообщить SASS, где находится гем bootstrap-sass.

Это возможно? Или есть лучшее решение?


person ChrisJ    schedule 24.01.2017    source источник


Ответы (1)


Я не нашел ответа на заданный мною вопрос.

В конце концов, мой обходной путь заключался в том, что я вытащил @imports в отдельный файл, который остался в конвейере ресурсов, и использовал raketask в своем вопросе.

person ChrisJ    schedule 01.02.2017