可以在非生产环境中禁用 Jekyll 插件/生成器吗?

Can a Jekyll plugin / generator be disabled for non-production environment?

我有一个自定义 generator 用于为我的 Jekyll 博客创建存档页面(每年、每月和每天)。但是那个生成器需要一些时间,我可以为非生产环境禁用生成器或者从配置中的插件条目禁用生成器吗?

更新: 插件只是放在 _plugins 文件夹中,它没有作为 gem 包交付/分发!

我正在寻找一种用于开发环境的生成器(可能还有过滤器或其他插件)黑名单,以节省构建时间。

本地插件

要切换本地插件,您可以使用两个不同的文件夹,并通过多个配置文件的组合在它们之间切换,覆盖您的 plugins_dir

您可以为 _config-dev.yml 文件中的 plugins_dir 字段设置不同的值,这将覆盖您在 _config.yml 中的值(如果未设置,则默认为 _plugins) :

$ bundle exec jekyll build --config _config.yml,_config-dev.yml

这样您就可以拥有两个文件夹,其中您的开发插件和生产插件是分开的。当您在两个环境中使用插件时,这会产生维护成本。


Gemfile 插件

为了切换基于 gem 的插件,您可以在没有生产插件的情况下使用不同的 Gemfile 进行开发:

BUNDLE_GEMFILE=Gemfile-dev bundle exec jekyll build

这以维护两个文件为代价为您提供了很大的灵活性。您需要确保两者的插件版本相同。

或者,您可以使用额外的配置文件进行开发。您可以为 _config-dev.yml 文件中的 plugins 字段设置不同的值,这将覆盖您在 _config.yml 中的值。您需要确保您的插件没有设置在 Gemfile:jekyll_plugins 组中才能正常工作(因为这会简化配置设置):

$ bundle exec jekyll build --config _config.yml,_config-dev.yml

一般表现

如果您的站点有大量帖子,那么在开发时处理较少的帖子可能会节省最多的时间。您可以使用 limit_posts 命令行选项 (https://jekyllrb.com/docs/configuration/options/#build-command-options):

$ bundle exec jekyll build --limit_posts 5

对于一般的构建时间改进,我强烈建议分析您的站点以找到最佳优化位置:

$ bundle exec jekyll build --profile