我已经在不同的文件夹中使用.haml和.scss文件进行了一个项目。
我按照这里的指南页/页创建了_plugins/haml.rb和_plugins/sass.rb
我把所有的.scss文件都移到了./assets/css/文件夹中
为了确保,我还创建了layouts文件夹,并将所有.haml文件放入其中。
我运行了jekyll serve --watch,这些.haml / .scss文件没有在_sites中转换为.html或.css文件。我也不能通过浏览器访问它们。
我在这里尝试过这个文件,但是没有帮助任何一个转炉-rb
那么,我做错了什么,如何观看所有的.haml / .scss文件呢?
我来自middlemanapp世界,所以jekyll对我来说是新的。
更新1
我的高层次目标是:
http://localhost:4000/index.html,而实际上我有index.haml作为Haml更新2
这是我的新_config.yml
source: .
destination: ./_site
plugins: ./_plugins
layouts: .基本上,我希望在主文件夹中有所有的.haml文件,而不是layouts。在_plugins中,我有_plugins/haml.rb和_plugins/sass.rb,如前所述。尽管如此,当我在主文件夹中创建一个示例index1.haml时,它仍然不能工作,当--watch时,它没有被转换
更新3
这是我的目录结构:
/www
/_plugins
haml.rb
sass.rb
/_layouts
index1.haml
_config.yml
index1.haml在haml.rb中
module Jekyll
require 'haml'
class HamlConverter < Converter
safe true
priority :low
def matches(ext)
ext =~ /haml/i
end
def output_ext(ext)
".html"
end
def convert(content)
engine = Haml::Engine.new(content)
engine.render
rescue StandardError => e
puts "!!! HAML Error: " + e.message
end
end
end在index1.haml中(两个文件都有相同的内容):
!!!
%html
%head
%meta{charset: "utf-8"}/
%meta{content: "initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width", name: "viewport"}/
%title
%body
Test Test在_config.yaml中
---
source: .
destination: ./_site
plugins: ./_plugins
layouts: ./_layouts
---这对我来说还是没用的。没有生成.html文件。
更新$
将此添加到.haml文件可以工作:
---
title: Index
---但是,我可以修改.haml文件,但我尽量避免使用.sass / .scss文件。我有很多从靴带和其他工作中得到的。有什么解决办法吗?
发布于 2014-06-10 21:58:27
听起来,您似乎没有指定source目录的正确的Jekyll配置。
您可以通过参数指定配置来构建东西,如:jekyll serve --source assets --destination public
但是,最好是抓住一个_config.yml示例,然后从那里开始。您所面临的场景在基本用法文档中进行了描述。
首先是一个非常简单的_config.yml,它包含:
source: source
destination: public确保您的_plugins和_layouts是source目录的子目录。
如果您不创建自己的配置,则使用默认配置。如果要使用此配置,请确保结构和工具集与其匹配:
source: .
destination: ./_site
plugins: ./_plugins
layouts: ./_layouts
include: ['.htaccess']
exclude: []
keep_files: ['.git','.svn']
gems: []
timezone: nil
encoding: nil
future: true
show_drafts: nil
limit_posts: 0
highlighter: pygments
relative_permalinks: true
permalink: date
paginate_path: 'page:num'
paginate: nil
markdown: kramdown
markdown_ext: markdown,mkdown,mkdn,mkd,md
textile_ext: textile
excerpt_separator: "\n\n"
safe: false
watch: false # deprecated
server: false # deprecated
host: 0.0.0.0
port: 4000
baseurl: ""
url: http://localhost:4000
lsi: false
maruku:
use_tex: false
use_divs: false
png_engine: blahtex
png_dir: images/latex
png_url: /images/latex
fenced_code_blocks: true
rdiscount:
extensions: []
redcarpet:
extensions: []
kramdown:
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
use_coderay: false
coderay:
coderay_wrap: div
coderay_line_numbers: inline
coderay_line_numbers_start: 1
coderay_tab_width: 4
coderay_bold_every: 10
coderay_css: style
redcloth:
hard_breaks: true您还必须确保您希望由Jekyll处理的每个页面都具有适当的YAML前沿问题。
任何包含YAML前端块的文件都将由Jekyll作为特殊文件处理。
如果您没有YAML前端,您的插件将不会被应用。
它甚至可以是空的,比如
---
---
#haml删除./_layouts/index1.haml你不需要它。将index1.haml更改为:
---
title: Index
---
!!!
%html
%head
%meta{charset: "utf-8"}/
%meta{content: "initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width", name: "viewport"}/
%title
%body
Test Test并将---行从_config.yml中删除--应该是
source: .
destination: ./_site
plugins: ./_plugins
layouts: ./_layouts据我所知,使用Jekyll插件,没有一种方法来处理.scss文件而不需要那些文件中的YAML前端内容。要实现这一点,除了jekyll处理之外,您还需要使用预处理器。我个人使用杰基尔资产管道再生。它很容易设置,并有一些不错的其他功能,如缩小和拼接文件在一起。
或者,由于您正在使用grunt (我猜想,由于您的标记),您可以使用.scss。
https://stackoverflow.com/questions/24075316
复制相似问题