/
index.js
36 lines (26 loc) · 823 Bytes
/
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
var postcss = require('postcss');
var parser = require('postcss-selector-parser');
module.exports = postcss.plugin('class-export', function classExport(options) {
return function(css) {
var processor = parser();
options = options || {};
var classNames = [];
let filePath = css.source.input.file;
css.walkRules(function(rule) {
rule.selectors.forEach(selector => {
parser(sels => {
sels.map(sel => {
sel.nodes.map(node => {
if (node.type === 'class') {
if(classNames.indexOf(node.value) === -1) {
classNames.push(node.value);
}
}
});
})
}).process(selector);
})
});
options.export(filePath, classNames);
}
});