30 lines
799 B
JavaScript
30 lines
799 B
JavaScript
'use strict';
|
|
|
|
let postcss = require('postcss');
|
|
|
|
let pxRegExp = /\b(\d+(\.\d+)?)px\b/;
|
|
let pxGlobalRegExp = new RegExp(pxRegExp.source, 'g');
|
|
|
|
module.exports = postcss.plugin('postcss-px2rem', (option) => {
|
|
let opt = Object.assign({
|
|
scale: 0.5,
|
|
ignore: []
|
|
}, option)
|
|
|
|
return (root, result) => {
|
|
const ignore = opt.ignore || []
|
|
const file = result.opts.from
|
|
for (const ignoreElement of ignore) {
|
|
if (file.indexOf(ignoreElement) >= 0) return
|
|
}
|
|
root.walkDecls(function(decl) {
|
|
if (/px/.test(decl.value)) {
|
|
decl.value = decl.value.replace(pxGlobalRegExp, function(match, p1) {
|
|
return p1 * opt.scale + 'px'
|
|
})
|
|
}
|
|
})
|
|
result.root = root
|
|
};
|
|
});
|