1

我的 _posts 文件夹中有一个用于 jekyll 的 imgs 子文件夹。我使用 Markdown 表单链接到该文件夹​​中的图像:

![myimg](imgs/myimage.jpg)

当我生成网站时,jekyll 正确地创建了链接:

<img src='imgs/myimage.jpg>

但它不会将带有图像的 imgs 文件夹复制到 _site 中的正确子目录。

如果 html 创建为

_site/2013/10/myEntry.html

图片应该在

_site/2013/10/imgs

链接工作的文件夹。

如何配置 jekyll 将 imgs 文件夹复制到 _site 中的正确位置?

4

2 回答 2

3

虽然最好将您的 images 文件夹放在 Jekyll 站点的根目录下,但您可以使用一个插件,让 Jekyll 识别其中的 images 文件夹_posts。使用与您用于帖子的日期格式相同的日期格式为您的图像文件添加前缀,它们将被复制到_site您想要的目录结构中。

# _plugins/post_images.rb
module Jekyll
  POST_IMAGES_DIR = '_posts/imgs'
  DEST_IMAGES_DIR = 'imgs'

  class PostImageFile < StaticFile
    def destination(dest)
      name_bits = @name.split('-', 4)
      date_dir = ''
      date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
      date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
      date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
      File.join(dest, date_dir + DEST_IMAGES_DIR, name_bits.join('-'))
    end
  end

  class PostImagesGenerator < Generator
    def generate(site)
      # Check for the images directory inside the posts directory.
      return unless File.exists?(POST_IMAGES_DIR)

      post_images = []

      # Process each image.
      Dir.foreach(POST_IMAGES_DIR) do |entry|
        if entry != '.' && entry != '..'
          site.static_files << PostImageFile.new(site, site.source, POST_IMAGES_DIR, entry)
          post_images << entry.gsub(File.extname(entry), '')
        end
      end

      # Remove images considered to be "actual" posts from the posts array.
      site.posts.each do |post|
        if post_images.include?(post.id[1..-1].gsub('/', '-'))
          site.posts.delete(post)
        end
      end
    end
  end
end
于 2013-10-25T03:54:23.163 回答
0

我开发了一个 Jekyll 插件,可以帮助将帖子资产与 Markdown 文件一起保存,它可能会满足您的需求:https ://nhoizey.github.io/jekyll_post_files/

于 2016-06-29T14:24:20.887 回答