Leave this up to the user; their config file is a JS file and we give them access to the default config, so they can do as much merging of defaults as they like.
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
import _ from 'lodash'
|
|
import postcss from 'postcss'
|
|
import stylefmt from 'stylefmt'
|
|
|
|
import defaultConfig from '../defaultConfig'
|
|
|
|
import substituteResetAtRule from './lib/substituteResetAtRule'
|
|
import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions'
|
|
import generateUtilities from './lib/generateUtilities'
|
|
import substituteHoverableAtRules from './lib/substituteHoverableAtRules'
|
|
import substituteFocusableAtRules from './lib/substituteFocusableAtRules'
|
|
import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules'
|
|
import substituteScreenAtRules from './lib/substituteScreenAtRules'
|
|
import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules'
|
|
|
|
const plugin = postcss.plugin('tailwind', (config = defaultConfig) => {
|
|
if (_.isString(config)) {
|
|
config = require(path.resolve(config))
|
|
}
|
|
|
|
return postcss([
|
|
substituteResetAtRule(config),
|
|
evaluateTailwindFunctions(config),
|
|
generateUtilities(config),
|
|
substituteHoverableAtRules(config),
|
|
substituteFocusableAtRules(config),
|
|
substituteResponsiveAtRules(config),
|
|
substituteScreenAtRules(config),
|
|
substituteClassApplyAtRules(config),
|
|
stylefmt,
|
|
])
|
|
})
|
|
|
|
plugin.defaultConfig = _.cloneDeep(defaultConfig)
|
|
|
|
module.exports = plugin
|