Allow plugins to register new config variables

This commit is contained in:
Adam Wathan 2019-01-21 13:52:07 -05:00
parent 8b1b797b9f
commit 5ea8bbe798
4 changed files with 63 additions and 5 deletions

View file

@ -1,11 +1,12 @@
import _ from 'lodash'
import functions from 'postcss-functions'
export default function(config) {
export default function(config, pluginConfigValues) {
return functions({
functions: {
config: (path, defaultValue) => {
return _.get(config, _.trim(path, `'"`), defaultValue)
const trimmedPath = _.trim(path, `'"`)
return _.get(config, trimmedPath, _.get(pluginConfigValues, trimmedPath, defaultValue))
},
},
})

View file

@ -18,7 +18,7 @@ export default function(getConfig) {
return postcss([
substituteTailwindAtRules(config, processedPlugins),
evaluateTailwindFunctions(config),
evaluateTailwindFunctions(config, processedPlugins.configValues),
substituteVariantsAtRules(config, processedPlugins),
substituteResponsiveAtRules(config),
substituteScreenAtRules(config),

View file

@ -19,6 +19,7 @@ export default function(plugins, config) {
const pluginComponents = []
const pluginUtilities = []
const pluginVariantGenerators = {}
const pluginConfigValues = {}
plugins.forEach(plugin => {
plugin({
@ -64,6 +65,9 @@ export default function(plugins, config) {
addVariant: (name, generator) => {
pluginVariantGenerators[name] = generateVariantFunction(generator)
},
addConfig: (namespace, value) => {
pluginConfigValues[namespace] = value
},
})
})
@ -71,5 +75,6 @@ export default function(plugins, config) {
components: pluginComponents,
utilities: pluginUtilities,
variantGenerators: pluginVariantGenerators,
configValues: pluginConfigValues,
}
}