-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
53 lines (46 loc) · 1.12 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
'use strict'
const postcss = require('postcss')
const loop = require('simple-loop')
exports.name = 'postcss'
exports.outputFormat = 'css'
function sanitizePlugins(pluginsToLoad) {
const plugins = []
loop(pluginsToLoad, (item, i) => {
let plugin = null
switch (typeof i) {
case 'number':
if (typeof item === 'string') {
plugin = require(item)
} else {
plugin = item
}
break
case 'object':
plugin = i
break
case 'string':
plugin = require(i)(item)
break
default:
plugin = i
break
}
if (plugin) {
plugins.push(plugin)
}
})
return plugins
}
exports.render = function (str, options) {
const opts = options || {}
const plugins = sanitizePlugins(opts.plugins || [])
return postcss(plugins).process(str, opts).css
}
exports.renderAsync = function (str, options) {
const opts = options || {}
const plugins = sanitizePlugins(opts.plugins || [])
return postcss(plugins).process(str, opts).then(result => {
// TODO: Add result.map to "dependencies".
return result.css
})
}