Files
postcss/lib/postcss.js
T

52 lines
1.3 KiB
JavaScript

let Declaration = require('./declaration')
let Processor = require('./processor')
let stringify = require('./stringify')
let Comment = require('./comment')
let AtRule = require('./at-rule')
let parse = require('./parse')
let list = require('./list')
let Rule = require('./rule')
let Root = require('./root')
function postcss (...plugins) {
if (plugins.length === 1 && Array.isArray(plugins[0])) {
plugins = plugins[0]
}
return new Processor(plugins)
}
postcss.plugin = function plugin (name, initializer) {
function creator (...args) {
let transformer = initializer(...args)
transformer.postcssPlugin = name
transformer.postcssVersion = new Processor().version
return transformer
}
let cache
Object.defineProperty(creator, 'postcss', {
get () {
if (!cache) cache = creator()
return cache
}
})
creator.process = function (css, processOpts, pluginOpts) {
return postcss([creator(pluginOpts)]).process(css, processOpts)
}
return creator
}
postcss.stringify = stringify
postcss.parse = parse
postcss.list = list
postcss.comment = defaults => new Comment(defaults)
postcss.atRule = defaults => new AtRule(defaults)
postcss.decl = defaults => new Declaration(defaults)
postcss.rule = defaults => new Rule(defaults)
postcss.root = defaults => new Root(defaults)
module.exports = postcss