Skip to content

Instantly share code, notes, and snippets.

@dgieselaar
Last active December 22, 2018 08:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dgieselaar/6c0de2adf29ba9e4d10ae4aeb1b80fb6 to your computer and use it in GitHub Desktop.
Save dgieselaar/6c0de2adf29ba9e4d10ae4aeb1b80fb6 to your computer and use it in GitHub Desktop.
const RawSource = require('webpack-sources').RawSource;
class SplitCssByMediaPlugin {
apply(compiler) {
// wait until compilation becomes available
compiler.hooks.compilation.tap(
'SplitByCssMediaPlugin',
(compilation) => {
// hook into additionalAssets phase
compilation.hooks.additionalAssets.tap(
'SplitByCssMediaPlugin',
() => {
// get all about-to-be-emitted css files
const cssFiles = Object.keys(compilation.assets)
.filter(key => key.endsWith('.css'));
cssFiles.forEach((filename) => {
const rawSource = compilation.assets[filename];
// extract CSS string
const css = rawSource.source();
// create device-type specific css
const deviceSpecificCss = '..';
// add output back to compilation
compilation.assets[name] = new RawSource(deviceSpecificCss);
});
}
)
}
);
}
}
module.exports = SplitCssByMediaPlugin;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment