All files / packages/design-system/scripts/gulp/plugins data-uri.js

0% Statements 0/10
0% Branches 0/1
0% Functions 0/1
0% Lines 0/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                                 
const fs = require('fs');
const mime = require('mime');
const path = require('path');
 
const root = path.resolve(__dirname, '../../../assets/images');
 
module.exports = (opts = {}) => {
  return {
    postcssPlugin: 'postcss-base64',
    Rule(css) {
      css.walkDecls(/background(\-image)?/i, decl => {
        let rePattern = /url\(\s*['|"]?(.*?)['|"]?\s*\)/i;
        let assetPath;
        if (rePattern.test(decl.value)) {
          assetPath = path.join(root, decl.value.match(rePattern)[1]);
          if (fs.existsSync(assetPath)) {
            decl.value = decl.value.replace(
              rePattern,
              'url(data:' +
                mime.getType(assetPath) +
                ';base64,' +
                fs.readFileSync(assetPath, 'base64') +
                ')'
            );
          }
        }
      });
    }
  };
};
 
module.exports.postcss = true;