首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jekyll去看haml和sass

jekyll去看haml和sass
EN

Stack Overflow用户
提问于 2014-06-06 06:09:46
回答 4查看 1.7K关注 0票数 6

我已经在不同的文件夹中使用.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

我的高层次目标是:

  1. 使用Jekyll进行Sass和Haml的前端开发
  2. 它必须监视文件中的更改。
  3. 它必须转换.sass /。scss文件和Haml到.css和.html的值班。这意味着我可以去http://localhost:4000/index.html,而实际上我有index.haml作为Haml
  4. 我的项目不遵循Jekyll中提到的目录结构(包括布局、文件夹和其他)。这必须能够检测到其他文件夹中的.sass和.haml文件(我可以指定此)。
  5. 我不想修改头部中的任何.sass或.scss文件来使Jekyll检测它。因为我已经有很多这样的东西了

更新2

这是我的新_config.yml

代码语言:javascript
运行
复制
source:      .
destination: ./_site
plugins:     ./_plugins
layouts:     .

基本上,我希望在主文件夹中有所有的.haml文件,而不是layouts。在_plugins中,我有_plugins/haml.rb_plugins/sass.rb,如前所述。尽管如此,当我在主文件夹中创建一个示例index1.haml时,它仍然不能工作,当--watch时,它没有被转换

更新3

这是我的目录结构:

代码语言:javascript
运行
复制
/www

 /_plugins

  haml.rb

  sass.rb

 /_layouts

  index1.haml

 _config.yml
 index1.haml

haml.rb

代码语言:javascript
运行
复制
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中(两个文件都有相同的内容):

代码语言:javascript
运行
复制
!!!
%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

代码语言:javascript
运行
复制
---
source:      .
destination: ./_site
plugins:     ./_plugins
layouts:     ./_layouts
---

这对我来说还是没用的。没有生成.html文件。

更新$

将此添加到.haml文件可以工作:

代码语言:javascript
运行
复制
---
title: Index
---

但是,我可以修改.haml文件,但我尽量避免使用.sass / .scss文件。我有很多从靴带和其他工作中得到的。有什么解决办法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2014-06-10 21:58:27

听起来,您似乎没有指定source目录的正确的Jekyll配置。

您可以通过参数指定配置来构建东西,如:jekyll serve --source assets --destination public

但是,最好是抓住一个_config.yml示例,然后从那里开始。您所面临的场景在基本用法文档中进行了描述。

首先是一个非常简单的_config.yml,它包含:

代码语言:javascript
运行
复制
source:      source
destination: public

确保您的_plugins_layoutssource目录的子目录。

如果您不创建自己的配置,则使用默认配置。如果要使用此配置,请确保结构和工具集与其匹配:

代码语言:javascript
运行
复制
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前端,您的插件将不会被应用。

它甚至可以是空的,比如

代码语言:javascript
运行
复制
---
---

#haml

删除./_layouts/index1.haml你不需要它。将index1.haml更改为:

代码语言:javascript
运行
复制
---
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中删除--应该是

代码语言:javascript
运行
复制
source:      .
destination: ./_site
plugins:     ./_plugins
layouts:     ./_layouts

据我所知,使用Jekyll插件,没有一种方法来处理.scss文件而不需要那些文件中的YAML前端内容。要实现这一点,除了jekyll处理之外,您还需要使用预处理器。我个人使用杰基尔资产管道再生。它很容易设置,并有一些不错的其他功能,如缩小和拼接文件在一起。

或者,由于您正在使用grunt (我猜想,由于您的标记),您可以使用.scss

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24075316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档