prefix-style-selectors.js 777 B

123456789101112131415161718192021222324252627282930
  1. const Promise = require('bluebird');
  2. const decodeEntities = require('he').decode;
  3. const postcss = require('postcss');
  4. const prefixSelectors = require('postcss-prefix-selector');
  5. /**
  6. * @return {Function} PostHTML plugin
  7. */
  8. function prefixStyleSelectors(prefix) {
  9. return (tree) => {
  10. const styleNodes = [];
  11. tree.match({ tag: 'style' }, (node) => {
  12. styleNodes.push(node);
  13. return node;
  14. });
  15. return Promise.map(styleNodes, (node) => {
  16. const content = node.content ? decodeEntities(node.content.join('')) : '';
  17. return postcss()
  18. .use(prefixSelectors({ prefix }))
  19. .process(content)
  20. .then(prefixedStyles => node.content = prefixedStyles.css);
  21. }).then(() => tree);
  22. };
  23. }
  24. module.exports = prefixStyleSelectors;