Подтвердить что ты не робот

Поиск темы с помощью Compass и Sass

Есть ли у кого-нибудь рабочий процесс для разработки Shopify тем с Compass и Sass? Я действительно близок, мне просто нужно выяснить, как не сделать Sass barf на тегах с CSS-тегами.

Вот что у меня есть:

  • Проект sass/compass в каталоге (ex:, "/newwebsite/)
  • Подкаталог, содержащий мою тему Shopify ( "/newwebsite/newwebsite-theme/" )
  • Компас config.rb, который указывает css, _dir images_dir и javascripts_dir все в папку с их ресурсами ( "/newwebsite/newwebsite-theme/assets/" )
  • Компас смотреть
  • shopify_theme gem также следит за загрузкой файлов тем для покупки (https://github.com/Shopify/shopify_theme)
  • EDIT Sass интерполяции (см. anser ниже)
  • Отредактируйте обратный вызов Compass для переименования в .css.liquid

Проблема: Compass barf, когда вам нужно использовать теги шаблонов Shopify, например, фоновое изображение - например, background: url ( "{{splash-1.jpg" | asset_url}} ")

Кто-нибудь знает, как проинструктировать Compass/Sass выплескивать теги жидких шаблонов, как они есть в CSS? Если у меня это есть, то у меня есть сплошной рабочий процесс редактирования Sass локально и мгновенное изменение изменений после покупки магазина.

Спасибо

EDIT: Используя Hopper ниже для жидких меток в Sass и переименовав файл Compass.css в .css.liquid, у меня теперь есть мгновенный рабочий процесс для разработки темы Shopify с Compass и Sass! Вот код для обратного вызова Compass, который находится в файле config.rb:

on_stylesheet_saved do |filename|
  s = filename + ".liquid"
  puts "copying to: " + s
  FileUtils.cp(filename, s)
  puts "removing: " + filename
end
4b9b3361

Ответ 1

Я не знаком с Shopify или ярлыками, но я знаю, что в SASS вы можете использовать интерполяции для вывода простого CSS as- является. Например, здесь SASS:

.test {
    background: url( #{'{{ "splash-1.jpg" | asset_url }}'} )
}

Будет скомпилирован:

.test {
    background: url({{ "splash-1.jpg" | asset_url }}); }

Это близко к тому, что вы ищете?

Ответ 2

Как вы держите компас от barfing на жидкой логике между свойствами? Например. всякий раз, когда появляется жидкое выражение if, я получаю ошибки, а использование #{'...'}, похоже, не помогает.

Это тест, с которым я не могу работать:

#container {
  width:884px;
  margin:0px auto;
  min-height:500px;
  position:relative;
  padding:0 40px;
  {% if settings.page_bg_transparent %}
    background:transparent;
  {% else %}
    background:{{ settings.page_bg_color }};
  {% endif %}
}

ОБНОВЛЕНИЕ странно, комментируя работу жидкой логики:

#container {
  width:884px;
  margin:0px auto;
  min-height:500px;
  position:relative;
  padding:0 40px; 
  /* {% if settings.page_bg_transparent %} */
    background:transparent;
  /* {% else %} */
    background:#{'{{ settings.page_bg_color }}'}; 
  /* {% endif %} */
}

Ответ 3

Для URL-адреса актива вы также можете использовать пользовательские функции SCSS. Поместите это в свой файл config.rb

module Sass::Script::Functions
  def shopify_image_url(string)
    assert_type string, :String
    Sass::Script::String.new("url({{'#{string.value}' | asset_url}})")
  end
end

И затем используйте его в своих стилях .scss, как это

background: shopify_image_url('image.png');

Ответ 4

Мне было полезно удалить исходный выходной файл после сохранения, чтобы у вас не было этого лишнего, нежидкостного файла, плавающего в каталоге ресурсов.

on_stylesheet_saved do |filename|
  s = filename + ".liquid"
  puts "copying to: " + s
  FileUtils.cp(filename, s)
  puts "removing: " + filename
  FileUtils.remove_file(filename)
end

Ответ 5

На основе ответа на загрузчик, для тех, кто использует autoprefixer для обработки sass-вывода, вам нужно будет добавить дополнительную пару кавычек, потому что url( {{ ... }} ) заставляет парсер autoprefixer задыхаться.

Сделайте это:

background: url( "#{'{{ "splash-1.jpg" | asset_url }}'}" )

Что будет в файле *.css.liquid:

background: url( '{{ "splash-1.jpg" | asset_url }}' )

Ответ 6

Если вы хотите сохранить расширение ".scss.liquid" для новой отзывчивой проверки:

on_stylesheet_saved do |filename|
  FileUtils.mv filename, "#{File.dirname(filename)}/#{File.basename(filename,'.*')}.scss.liquid"
end

Он переименовывает файлы вместо копирования и затем удаляет.

Ответ 7

Я написал статью, описывающую методы, которые я использовал для того, чтобы Compass и Sass хорошо работали с Shopify. Это тот же подход ответа DOMUSNETWORK. Я подробно расскажу о структуре файла.

http://www.mealeydev.com/blog/shopify-and-sass/

Ответ 8

Это сработало для меня, частично - однако я обнаружил, что приложение Shopify Theme много раз не захотело загрузить мой отредактированный файл .css.liquid, потому что, видимо, он не узнал, что файл был отредактирован.

Для меня это решил использовать следующий код в моем config.rb вместо кода в вопросе выше:

on_stylesheet_saved do |filename|
  move_to = filename + ".liquid"
  puts "Moving from #{filename} to #{move_to}"
  FileUtils.mv(filename, move_to)
end

Ответ 9

Бесстыдный плагин...

Я думаю, что @nick на правильном пути.

scss лучше, когда он скомпилирован перед отправкой в ​​Shopify.

Для других, кто находит этот ответ, я считаю, что Quickshot - это инструмент, который вы ищете.

Вам все равно нужно интерполировать URL-адреса ресурсов, но quickshot автоматически перекомпилирует ваш scss и загрузит результат, чтобы совершить покупку за один шаг. Что также дает вам возможность использовать @include в ваших scss файлах.

http://quickshot.io/

https://github.com/internalfx/quickshot