postcssSplitMediaPlugin.js 791 字节
Newer Older
D
DCloud_LXH 已提交
1 2 3 4 5
const mediaQuerys = []

module.exports = {
  splitMediaPlugin: function (root, result) {
    root.walkAtRules(rule => {
D
DCloud_LXH 已提交
6
      if (rule.params.indexOf('prefers-color-scheme') !== -1) {
D
DCloud_LXH 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
        root.removeChild(rule)

        mediaQuerys.push(rule)
      }
    })
  },
  generateMediaQuerys: function ({ outputDir, filename = 'index.dark.css' }) {
    if (mediaQuerys.length) {
      const fs = require('fs')
      const path = require('path')
      const postcss = require('postcss')
      var uglifycss = require('uglifycss')

      const mediaRoot = postcss.root()
      mediaRoot.append(mediaQuerys)

      fs.writeFileSync(
        path.resolve(outputDir, filename),
        uglifycss.processString(mediaRoot.toResult().css),
        { encoding: 'utf-8', flag: 'w+' }
      )
    }
  }
}