Jekyll 中的运行时依赖与开发依赖

Runtime dependencies versus development dependencies in Jekyll

必须将以下依赖项添加到 gemspec 文件中才能提供 jekyll 项目:

json -v '2.3.0'
nokogiri -v '1.10.9'
nokogumbo -v '2.0.2'
jaro_winkler -v '1.5.4'

Which of these dependencies should be classified as runtime dependencies? Which should be classified as development dependencies?

如何确定给定的依赖项是 runtime dependency 还是 development dependency

gemspec 文件中的具体行如下所示:

  s.add_runtime_dependency 'aaaaa-aa-aaaa', '~> x.x'  
  s.add_development_dependency 'bbbb-bbbbb', '~> y.y'  

整个 gemspec 文件将类似于:

Gem::Specification.new do |s|
  s.name          = ''
  s.version       = ''
  s.license       = ''
  s.authors       = ['', '']
  s.email         = ['']
  s.homepage      = ''
  s.summary       = ''
  s.files         = `'
  end

  s.platform = Gem::Platform::RUBY
  s.add_runtime_dependency 'aaaaa-aa-aaaa', '~> x.x'
  s.add_development_dependency 'bbbb-bbbbb', '~> y.y'
end  

这是 运行 在 Amazon EC2 实例上 运行 Amazon Linux 2.

由于问题是关于 Jekyll 主题(打包为 gem),我们可以非常有把握地说这里的主要应用程序是依赖于此 gem 的 Jekyll 应用程序。对此没有硬性规定,但就 gem 而言,Jekyll 应用程序环境 和 "runtime" 似乎是合理的。因此,在 Jekyll 应用程序中使用 gem 所依赖的任何东西都是运行时依赖。至少,Jekyll 主题将取决于 Jekyll 本身的某些特定版本,可能还有其他一些东西。

这是一种简明的表达方式。如果 jekyll build 在没有您提到的这些 gem 的情况下失败,那么它们是运行时依赖项。

开发依赖项仅用于您在开发 gem 时需要的额外 gem,例如 rspec 或 rubocop。