我正在使用Jekyll Asset Pipeline构建我的网站,我只想在发布时压缩网站(大约需要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
答案 0 :(得分:3)
您甚至不需要特殊的宝石 - 您可以将多个配置文件传递给jekyll build
:
首先,常规配置文件,包含所有始终需要的设置,以及禁用压缩的值,因为每次在本地构建时,并不总是希望它运行:
destination: _site
source: src
markdown: rdiscount
# ... and many more settings that are always needed
asset_pipeline:
bundle: false
compress: false
然后,您需要第二个用于发布的配置文件,该文件仅覆盖您实际想要的不同值:
asset_pipeline:
bundle: true
compress: true
因此,当您不发布时,您只需像以前一样运行jekyll build
。
但是当你发布时,你会以正确的顺序传递两个配置文件:
jekyll build --config _config.yml,_config-publish.yml
Jekyll将按照您传递的顺序应用它们,因此第二个文件中的设置将覆盖第一个文件中的设置,bundle
和compress
将设置为{{1}最后。
如果您无法控制将哪些参数传递给true
(可能在GitHub页面上?我从未使用过它,但也许......)您也可以这样做事情,反过来说:
jekyll build
和bundle
设置为compress
true
文件将_config-dev.yml
和bundle
再次设置为compress
答案 1 :(得分:1)
gueard-jekyll-plus
gem允许您配置多个配置文件,其中后者覆盖前者。我有一个相同的设置,我有一个_development.yml
文件,关闭开发工作的所有资产编译设置。是的,你必须保持警惕,但它使刷新网站变得简单。以下是相关部分:
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
我在文章Integrate Jekyll with Slim, Zurb Foundation, Compass and an Asset Pipeline中详细介绍了Gem的大部分基本设置。
你也不能这样做:
> jekyll build --config _development.yml
使用不同的配置文件构建?