有没有人有使用Compass和Sass开发Shopify主题的工作流程?我非常接近,我只需要弄清楚如何不在CSS液体标签上制作Sass barf。
这就是我所拥有的:
问题:指南针barf当你需要使用Shopify的液体模板标签时,例如背景图片 - 例如,背景:url(“{{”splash-1.jpg“| asset_url}}”)
有没有人知道如何指示Compass / Sass在进入CSS时吐出液体模板标签?如果我有这个,那么我有一个可靠的工作流程,在本地编辑Sass,并在shopify商店之后立即实现更改。
由于
编辑: 通过使用Hopper在Sass中的液体标签的答案,并将Compass输出.css文件重命名为.css.liquid,我现在有了一个用Compass和Sass设计Shopify主题的即时工作流程! 以下是config.rb中的Compass回调代码:
on_stylesheet_saved do |filename|
s = filename + ".liquid"
puts "copying to: " + s
FileUtils.cp(filename, s)
puts "removing: " + filename
end
答案 0 :(得分:23)
我不熟悉Shopify或液体标签,但我知道在SASS中您可以使用interpolations按原样输出纯CSS。例如,SASS在这里:
.test {
background: url( #{'{{ "splash-1.jpg" | asset_url }}'} )
}
将编译为:
.test {
background: url({{ "splash-1.jpg" | asset_url }}); }
这会让你接近你想要的东西吗?
答案 1 :(得分:10)
你如何防止指南针在属性之间对液体逻辑进行抨击?例如。任何时候出现流动性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 %} */
}
答案 2 :(得分:2)
对于资产网址,您还可以使用SCSS custom functions。 将它放在 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
然后在 styles.scss 中使用它,就像这样
background: shopify_image_url('image.png');
答案 3 :(得分:1)
我发现在保存后删除原始输出文件很有用,因此您没有在资产目录中浮动的额外的非流动文件。
on_stylesheet_saved do |filename|
s = filename + ".liquid"
puts "copying to: " + s
FileUtils.cp(filename, s)
puts "removing: " + filename
FileUtils.remove_file(filename)
end
答案 4 :(得分:1)
基于漏斗的答案,对于使用autoprefixer处理sass输出的任何人,您需要添加一对额外的引号,因为url( {{ ... }} )
会导致autoprefixer的解析器阻塞。
这样做:
background: url( "#{'{{ "splash-1.jpg" | asset_url }}'}" )
*.css.liquid
文件中的内容如下:
background: url( '{{ "splash-1.jpg" | asset_url }}' )
答案 5 :(得分:1)
如果您希望为新的自适应结帐使用保留“.scss.liquid”扩展程序:
on_stylesheet_saved do |filename|
FileUtils.mv filename, "#{File.dirname(filename)}/#{File.basename(filename,'.*')}.scss.liquid"
end
它重命名文件而不是复制然后删除。
答案 6 :(得分:1)
我写了一篇文章,描述了我用Compass和Sass与Shopify合作的方法。这与DOMUSNETWORK的答案相同。我将详细介绍文件结构。
答案 7 :(得分:0)
这部分对我有用 - 不过我发现Shopify主题应用程序很多时候都不想上传我编辑的.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
答案 8 :(得分:0)
无耻插头......
我认为@nick正走在正确的轨道上。
在发送到Shopify之前编译时,scss会更好。对于其他找到这个答案的人,我认为Quickshot是您正在寻找的工具。
您仍然需要为资产网址进行插值,但Quickshot会自动重新编译您的scss并将结果上传到shopify一步。这也使您能够在scss文件中使用@include
。