1.3.0 • Published 7 years ago

postcss-split-mq v1.3.0

Weekly downloads
9
License
MIT
Repository
github
Last release
7 years ago

postcss-split-mq

Test Coverage Maintainability Build Status

PostCSS plugin to split specific media queries into separate files.

Usage

Assuming a CSS file like this:

/* main.css */

body {
  color: tangerine;
}

@media (min-width: 1024px) {
  body {
    color: pink;
  }
}

You can split it like this:

const postcss = require('postcss');
const splitMq = require('postcss-split-mq');

const CSS = readFile('main.css');

const options = {
  outpath: './',
  files: [
    {
      name: 'wide.css',
      match: /min-width:\s*1024px/
    }
  ]
};

postcss([splitMq(options)])
.process(CSS)
.then(result => {
  // result will be a postcss container with the remaining CSS
  // after striping all media queries that match the `files` option
  writeFile('remaining.css', result.css)
});

And that will give you:

/* remaining.css */

body {
  color: tangerine;
}

and:

/* wide.css */

@media (min-width: 1024px) {
  body {
    color: pink;
  }
}

You can create multiple files with multiple match criteria per file. Media queries are captured for a given file if any of its match expressions are found.

e.g.

options = {
  outpath: './',
  files: [
    {
      name: 'medium.css',
      match: [
        /min-width:\s*(640px|40r?em)/,
        /max-width:\s*(800px|50r?em)/
      ]
    },
    {
      name: 'wide.css',
      match: /min-width:\s*1024px/
    }
  ]
};

This can be improved. Contributions are welcome. Create an issue if you see a problem or to ask a question.