Jekyll资产未复制图像
我正在使用管理jekyll项目的资产管道。我在index.html文件中引用了一些不同的图像: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
<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`