Jekyll资产未复制图像

Jekyll资产未复制图像,jekyll,liquid,Jekyll,Liquid,我正在使用管理jekyll项目的资产管道。我在index.html文件中引用了一些不同的图像: <img src="{% asset_path slides/slide-1.jpg %}" _assets/slides目录中的五个图像之一未被复制到目标站点/assets/slides。其他四个复制正确。我已经验证了相同的img标签和液体标签用于所有五幅图像(见上文) 然而,我也尝试过: sources: - _assets/images - _assets/images/slides

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

<img src="{% asset_path slides/slide-1.jpg %}"
_assets/slides目录中的五个图像之一未被复制到目标站点/assets/slides。其他四个复制正确。我已经验证了相同的img标签和液体标签用于所有五幅图像(见上文)

然而,我也尝试过:

sources:
- _assets/images
- _assets/images/slides
我尝试过重命名图像以及删除子目录幻灯片,但没有成功。我确实将图像(使用Photoshop)保存为一个全新的文件,并将其复制。这感觉像是文件本身的某些属性导致忽略了这一点


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

请确保
\u config.yml
中包含以下配置信息:

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

我也遇到了这个。问题在于,jekyll资产会根据这些文件的内容(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
这将替换为不删除重复项的其他猴子补丁。将其放入
\u plugins/ext.rb
或当前包含jekyll资产的任何位置

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


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

对我起作用的是arron jeffery的建议,即
rm-rf.asset缓存
。清洁
\u站点
,以及设置

   `assets:
       cache: false` 
也许会有帮助


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

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