防止jekyll清理生成的JSON文件?

时间:2018-02-13 22:40:43

标签: json ruby jekyll

我编写了一个生成小JSON文件的简单插件

module Jekyll

  require 'pathname'
  require 'json'

  class SearchFileGenerator < Generator
     safe true

     def generate(site)
       output = [{"title" => "Test"}]

       path = Pathname.new(site.dest) + "search.json"

       FileUtils.mkdir_p(File.dirname(path))
       File.open(path, 'w') do |f|
         f.write("---\nlayout: null\n---\n")
         f.write(output.to_json)
       end
       # 1/0
     end
   end
end

但每次Jekyll运行完成时,生成的JSON文件都会被删除。如果我将除法除以零线并导致它出错,我可以看到search.json文件正在生成,但随后会被删除。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:0)

我发现了以下问题,建议将文件添加到keep_fileshttps://github.com/jekyll/jekyll/issues/5162,该文件有效:

新代码似乎避免search.json被删除:

module Jekyll

  require 'pathname'
  require 'json'

  class SearchFileGenerator < Generator
     safe true

     def generate(site)
       output = [{"title" => "Test"}]

       path = Pathname.new(site.dest) + "search.json"

       FileUtils.mkdir_p(File.dirname(path))
       File.open(path, 'w') do |f|
         f.write("---\nlayout: null\n---\n")
         f.write(output.to_json)
       end
       site.keep_files << "search.json"
     end
   end
end

答案 1 :(得分:0)

将新页面添加到site.pages

module Jekyll
  class SearchFileGenerator < Generator
    def generate(site)
      @site  = site
      search = PageWithoutAFile.new(@site, site.source, "/", "search.json")
      search.data["layout"] = nil
      search.content = [{"title" => "Test 32"}].to_json
      @site.pages << search
    end
  end
end

jekyll-feed code的启发。