我正在使用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)作为一个全新的文件,它确实被复制了。这感觉文件本身的某些属性导致省略它。
在什么情况下资产不会被复制?
答案 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 %}
标签 - 它也有一些格式化选项,对我来说似乎更可靠。