图像未由Jekyll-Assets复制

时间:2014-03-05 00:11:59

标签: jekyll liquid

我正在使用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)作为一个全新的文件,它确实被复制了。这感觉文件本身的某些属性导致省略它。

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

3 个答案:

答案 0 :(得分:2)

我也碰到了这个。问题是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哈希值,例如,通过更改像素。 (这在我的情况下效果不好,我有其他脚本生成缩略图等内容。)

答案 1 :(得分:0)

确保_config.yml

中包含以下配置信息
assets:
    sources:
        - _assets/images          
        - _assets/stylesheets          
        - _assets/images/slides

答案 2 :(得分:0)

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

   `assets:
       cache: false` 

也可能有所帮助。

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