【问题标题】:How to use version.rb plugin in Jekyll static site generator如何在 Jekyll 静态站点生成器中使用 version.rb 插件
【发布时间】:2012-11-14 23:36:40
【问题描述】:

这是插件代码...

module Jekyll
  module VersionFilter
    def versioned_url(input)
      "#{input}?#{Time.now.to_i}"
    end
  end
end

Liquid::Template.register_filter(Jekyll::VersionFilter)

我正在尝试缓存我的 .css 文件。我是液体新手。我无法弄清楚这个基本插件。有什么帮助吗?

【问题讨论】:

    标签: caching plugins jekyll liquid


    【解决方案1】:

    您需要将 version.rb 放入 Jekyll 站点根目录下的 _plugins/ 目录中。如果您没有 _plugins/ 目录,请创建一个。

    对于使用 - 它似乎提供了一个可以应用于文本的新过滤器 - 因此您可以在模板中使用它来过滤对 CSS 文件的引用,添加查询字符串以便它们不会被缓存- 但我敢肯定,无论您从哪里获得代码,都会有更多相关信息。

    不管怎样,用查询字符串打破缓存并不是最好的解决方案。最好编写一个插件,在实际文件名中添加一个新字符串,然后将该字符串添加到模板中包含这些资产的 url 中——但这有点复杂。

    【讨论】:

    • 我假设我会将我的 global.css url 放在插件中,就像 def versioned_url(/css/global.css) 这样正确吗?然后将液体过滤器放在我的文档头中?
    • 不完全。您将插件按原样放入,然后您可以将您的 css 放入 _config.yml 中,如下所示:css: /css/global.css。在您的模板中,您可以输入<link href="{{ site.css | VersionFilter }}" rel="stylesheet" type="text/css"> 之类的内容。对于它的价值,我认为这有点笨拙。如果我有时间,我可能会为 Jekyll 编写一个不错的静态资产管理器/版本器(如果还没有的话)。
    • 谢谢@heliotrope。我没有意识到您可以将您的 css 文件放在项目 _config.yml 中。这很酷。尽管您的解决方案不适用于VersionFilter。我使用了versioned_url,一切正常。 Jekyll 的缓存破坏插件会很棒。我上周搜索了一个,这就是我找到的全部github.com/krig/jekyll-plugins
    • 这是我最终使用的 CSS
    【解决方案2】:

    如果您可以选择使用现有插件进行静态资产版本控制,请尝试jekyll-minibundle

    假设您将未标记的 CSS 文件保存在 _styles 中(注意 _,因为您不希望将这些文件导出到生产站点)并希望标记的 CSS 文件出现在 css 中,请执行以下操作以下:

    <link href="{% ministamp _styles/site.css css/site.css %}" rel="stylesheet" media="screen, projection">
    

    与指南针结合使用效果很好,只需将指南针导出到_styles

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-01
      • 2015-10-28
      • 2020-05-28
      • 2017-05-19
      • 1970-01-01
      • 2019-01-05
      • 2017-09-21
      • 2017-04-11
      相关资源
      最近更新 更多