【问题标题】:Image Not Copied by Jekyll-Assets图片不是由 Jekyll-Assets 复制的
【发布时间】:2014-03-05 00:11:58
【问题描述】:

我正在使用Jekyll-Assets 来管理 jekyll 项目的资产管道。我在 index.html 文件中引用了一些不同的图像:

<img src="{% asset_path slides/slide-1.jpg %}"

源图像位于 _assets/images/slides。我的 _config.yml 文件为源配置了这个:

sources:
- _assets/images

_assets/slides 目录中的五个图像之一没有被复制到目标 _site/assets/slides。其他四个被正确复制。我已验证所有五张图片都使用了相同的 img 标签和液体标签(见上文)。

不过,我也试过:

sources:
- _assets/images
- _assets/images/slides

我尝试重命名图像以及删除子目录幻灯片,但没有成功。我确实将图像(使用 Photoshop)保存为一个全新的文件,它确实被复制了。这感觉就像文件本身的某些属性导致它被省略。

什么情况下资产不会被复制?

【问题讨论】:

  • 您检查过此图像文件的权限吗?
  • 是的,它们与同一目录中的其他四个图像相同:644。

标签: jekyll liquid


【解决方案1】:

我也遇到过。问题是 jekyll-assets 根据这些文件的内容(的 MD5 哈希)删除重复的资产文件。当您有重复的图像时,只会将一个复制到目标文件夹。从 Photoshop 中再次保存文件会更改其内容(可能只是时间戳)。

这是我正在使用的修复程序,似乎效果很好:

require "jekyll-assets"

# Monkey-patch jekyll-assets so it doesn't drop duplicate files.
module FixSitePatch
  def self.included(base)
    base.class_eval do
      alias_method :write, :__my_write
    end
  end
  def __my_write
    static_files.push(*asset_files)
    __orig_write
  end
end
Jekyll::Site.send :include, FixSitePatch

这会将the monkey-patch that jekyll-assets made 替换为不删除重复项的不同猴子补丁。把它放在_plugins/ext.rb 或任何你当前包含 jekyll-assets 的地方。

一个可能更好的解决方法是 jekyll-assets 重写所有目标资产路径以指向文件的一个唯一副本,尽管这可能会破坏外部链接或导致部分基于路径索引内容的搜索引擎出现问题组件。

或者,您可以对所有重复文件进行一些(不同的)编辑以更改其 MD5 哈希值,例如,通过更改像素。 (这在我的情况下效果不佳,我有其他脚本生成缩略图等内容。)

【讨论】:

    【解决方案2】:

    确保您的_config.yml 中有以下配置信息:

    assets:
        sources:
            - _assets/images          
            - _assets/stylesheets          
            - _assets/images/slides
    

    【讨论】:

      【解决方案3】:

      对我有用的是来自 arron-jeffery 的 https://github.com/jekyll/jekyll-assets/issues/261#issuecomment-221068294 的建议,即 rm -rf .asset-cache。清理_site,并设置

         `assets:
             cache: false` 
      

      或许也有帮助。

      此外,如果你使用 jekyll-assets,你可以使用它的{% img %} 标签——它也有一些格式化选项,而且对我来说似乎更可靠。

      【讨论】:

        猜你喜欢
        • 2012-06-13
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-01
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多