发布时如何让 Jekyll 将网站图标从子目录复制到根目录?

fra*_*ois 2 favicon jekyll

我使用 realfavicongenerator.net 来生成favicon.ico当今所需的所有其他文件。这是很多文件(超过 10 个),按照他们的建议,我将它们保存在站点根目录中。这看起来相当混乱,并且使得查看重要内容(例如我的配置文件)的速度变慢。

我想做的是将它们全部保存在一个_favicon子文件夹中,但有一个 Jekyll 配置选项,可以在发布时将子文件夹的内容复制到根目录_site。有没有一个选项可以做到这一点?

PAT*_*ION 6

遇到同样的问题后。我做了一些挖掘,最后决定为此编写一个 ruby​​ 插件。将一些文件存储在图标文件夹中,但由于 Yandix 的原因,必须将其他文件(例如browserconfig.xml和)保留在根目录中,这将是一个更好的解决方案。favicon.ico这将为您提供一种将所有文件保存在一个位置并将它们复制到_site构建时的文件夹的方法。<-- 这就是我们所要求的。不是一些“hacky”解决方案。

  1. 在根目录中创建一个名为 _plugins 的文件夹。Jekyll 在构建过程中自动使用此文件夹中的插件。将文件命名为 copy-my-files.rb 之类的名称,因此:./_plugins/copy-my-files.rb

红宝石插件代码:

#!/usr/bin/env ruby
require 'fileutils'

module Jekyll
  Jekyll::Hooks.register :site, :post_write do |post|
    Dir.glob('_favicon/*.*') do |file|
      sourcePath = file
      outputPath = File.join('_site', File.basename(file) )
      FileUtils.cp(sourcePath, outputPath)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这样做的作用是每次构建站点时都会将所有文件复制_favicon到该_site文件夹​​中。

  1. 将生成的链接包含在_includes/head.html 或写入一个包含所有名为的链接的文件favicons.html

#!/usr/bin/env ruby
require 'fileutils'

module Jekyll
  Jekyll::Hooks.register :site, :post_write do |post|
    Dir.glob('_favicon/*.*') do |file|
      sourcePath = file
      outputPath = File.join('_site', File.basename(file) )
      FileUtils.cp(sourcePath, outputPath)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  1. 如果您制作了一个单独的文件,名为“favicons.html将其包含在您的头脑中”:{% include favicons.html %}

{% 包括 favicons.html %}

所以这会起作用,因为填充的所有文件_favicon都会被复制。site.wbmanifest、manifest.json 和所有 png 图标等等。

就像另一篇文章所说,您可以将其分解为自己的 html 部分包含{% include favicons.html %},然后链接includes/favicons.html到 header.html 文件中。