saber icon indicating copy to clipboard operation
saber copied to clipboard

Allow plugin to modify siteConfig and themeConfig

Open egoist opened this issue 6 years ago • 0 comments

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

egoist avatar Oct 08 '19 08:10 egoist