/
index.js
87 lines (80 loc) · 2.18 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var assign = require('object-assign');
var postcss = require('postcss');
var processors = [
{
plugin: require('postcss-partial-import'),
namespace: 'import',
defaults: {}
},
{
plugin: require('postcss-nested'),
namespace: 'nested',
defaults: {}
},
{
plugin: require('postcss-custom-properties'),
namespace: 'properties',
defaults: {}
},
{
plugin: require('postcss-inline-svg'),
namespace: 'inline-svg',
defaults: {}
},
{
plugin: require('postcss-svgo'),
namespace: 'svgo',
defaults: {
plugins: [
{ cleanupNumericValues: false },
{ cleanupAttrs: false },
{ removeHiddenElems: false },
{ cleanupEnableBackground: false },
{ convertStyleToAttrs: false },
{ convertPathData: false },
{ convertTransform: false },
{ removeUnknownsAndDefaults: false },
{ removeNonInheritableGroupAttrs: false },
{ removeUselessStrokeAndFill: false },
{ removeUnusedNS: false },
{ cleanupIDs: false },
{ cleanupListOfValues: false },
{ moveElemsAttrsToGroup: false },
{ moveGroupAttrsToElems: false },
{ collapseGroups: false },
{ removeRasterImages: false },
{ convertShapeToPath: false },
{ sortAttrs: false },
{ removeDimensions: false }
]
}
},
{
plugin: require('autoprefixer'),
namespace: 'autoprefixer',
defaults: { browsers: ['last 2 versions']}
},
{
plugin: require('postcss-hexrgba'),
namespace: 'rgba-colors',
defaults: {}
},
{
plugin: require('postcss-discard-comments'),
namespace: 'discard-comments',
defaults: {}
}
];
module.exports = postcss.plugin('narwin-pack', function (opts) {
opts = assign({}, opts);
var instance = postcss();
processors.forEach(function (processor) {
var namespaceOptions = processor.namespace in opts ? opts[processor.namespace] : opts;
var processorOptions = {};
processorOptions = assign({}, processor.defaults, namespaceOptions);
if (namespaceOptions && !processorOptions.disable) {
instance.use(processor.plugin(processorOptions));
}
});
return instance;
});