saberland/saber

Allow plugin to modify siteConfig and themeConfig

Offen

#508 geöffnet am 08.10.2019

 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)JavaScript (127 Forks)batch import
contribution welcomehacktoberfesttype: feature

Repository-Metriken

Stars
 (2.151 Sterne)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

Feature request

What problem does this feature solve?

Plugins should be able to set default value for siteConfig, and probably themeConfig.

e.g. You create a plugin to fetch siteConfig from headless CMS, but you also want the user to be able to override siteConfig via saber-config.yml.

What does the proposed API look like?

A plugin:

exports.name = 'my-plugin-name'

exports.apply = api => {
  api.hooks.getSaberConfig.tapPromise('my-plugin-name', async config => {
    config.siteConfig = merge(await getSiteConfigFromApi(), config.siteConfig)
    return config
  })
}

How should this be implemented in your opinion?

Call the getSaberConfig hook before calling afterPlugins hook:

https://github.com/saberland/saber/blob/83c18a706637fedccdbe0ad34566218dc5780d94/packages/saber/lib/index.js#L185

And call it again when config file is modified:

https://github.com/saberland/saber/blob/83c18a706637fedccdbe0ad34566218dc5780d94/packages/saber/lib/plugins/watch-config.js#L58

Contributor Guide