liusuyi
2023-04-24 4737f1e038743ced243c9e52423404d9034d6107
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
const Promise = require('bluebird');
const decodeEntities = require('he').decode;
const postcss = require('postcss');
const prefixSelectors = require('postcss-prefix-selector');
 
/**
 * @return {Function} PostHTML plugin
 */
function prefixStyleSelectors(prefix) {
  return (tree) => {
    const styleNodes = [];
 
    tree.match({ tag: 'style' }, (node) => {
      styleNodes.push(node);
      return node;
    });
 
    return Promise.map(styleNodes, (node) => {
      const content = node.content ? decodeEntities(node.content.join('')) : '';
 
      return postcss()
        .use(prefixSelectors({ prefix }))
        .process(content)
        .then(prefixedStyles => node.content = prefixedStyles.css);
    }).then(() => tree);
  };
}
 
module.exports = prefixStyleSelectors;