Ruby 如何重写jekyllbuild命令,仅在生成时设置一些配置选项?

Ruby 如何重写jekyllbuild命令,仅在生成时设置一些配置选项?,ruby,jekyll,Ruby,Jekyll,我用它来建立我的网站,我只想压缩网站(大约需要20秒),当我发布它。为此,我必须在配置文件中以编程方式启用这些值: asset_pipeline: bundle: false compress: false 我试着编写一个插件,但它不起作用。有人能帮我解释一下原因吗 module Jekyll module Commands # I overwrite this here so we only do heavy work (like compressing HT

我用它来建立我的网站,我只想压缩网站(大约需要20秒),当我发布它。为此,我必须在配置文件中以编程方式启用这些值:

asset_pipeline:
  bundle: false
  compress: false
我试着编写一个插件,但它不起作用。有人能帮我解释一下原因吗

module Jekyll
    module Commands
        # I overwrite this here so we only do heavy work (like compressing HTML and stuff)
        # when we are building the site, not when testing (which uses jekyll serve)
        class << Build
            alias_method :_process, :process
            def process(options)
                require 'jekyll-press'
                options['asset_pipeline']['bundle'] = true
                options['asset_pipeline']['compress'] = true
                _process(options)
            end
        end
    end
end
模块杰基尔
模块命令
#我在这里覆盖它,所以我们只做繁重的工作(比如压缩HTML和其他东西)
#当我们构建站点时,而不是测试时(使用jekyll服务)

类gueard jekyll plus
gem允许您配置多个配置文件,其中后面的配置文件覆盖前面的配置文件。我有相同的设置,其中有一个
\u development.yml
文件,用于关闭开发工作的所有资产编译设置。是的,您必须设置guard,但它使刷新站点变得简单。以下是相关章节:

guard 'jekyll-plus', extensions: %w[slim yml scss js md html xml txt rb], serve: true,    rack_config: 'config.ru', config: ['_config.yml', '_development.yml'] do
  watch /.*/
  ignore /^build/
end
我在本文中详细介绍了Gem的大部分基本设置

难道你就不能这样做:

> jekyll build --config _development.yml

要使用不同的配置文件进行构建?

您甚至不需要特殊的gem-您可以将多个配置文件传递给
jekyll build

首先是常规配置文件,包含始终需要的所有设置,加上禁用压缩的值,因为您并不总是希望每次在本地构建时都运行该文件:

_config.yml: 然后,您需要第二个用于发布的配置文件,该文件仅覆盖您实际希望不同的值:

_config-publish.yml:
因此,当您不发布时,只需像以前一样运行
jekyllbuild

但在发布时,您会按正确的顺序传递两个配置文件:

jekyll build --config _config.yml,_config-publish.yml
Jekyll将按照您传递它们的顺序应用它们,因此第二个文件中的设置将覆盖第一个文件中的设置,
bundle
compress
最终将设置为
true


如果您无法控制哪些参数将被传递到
jekyll build
(可能在GitHub页面上?我从未使用过它,但可能…),您也可以做同样的事情,只是反过来:

  • 在默认配置文件中将
    bundle
    compress
    设置为
    true
  • 当您不发布时,请使用第二个
    \u config-dev.yml
    文件再次设置
    捆绑
    压缩
asset_pipeline:
  bundle: true
  compress: true
jekyll build --config _config.yml,_config-publish.yml