1.0.2 • Published 8 years ago
postcssify-icss v1.0.2
browserify postcss plugin
Compile css-modules using browserify.
Runs postcss.process()
for each require('./file.css')
.
The generated css for each require() is collected,
sorted by dependencies and available
as a stream via bundle.on('css stream', (stream) => {})
.
This plugin supports, but must be added before, watchify.
ICSS plugins
Runs the following plugins, in displayed order
- postcss-icss-values^2.0.0
- postcss-icss-selectors^2.0.0 (global mode)
- postcss-icss-composes^2.0.0
API usage
const browserify = require('browserify');
const postcssify = require('postcssify-icss');
const rawBody = require('raw-body');
var bundle = browserify();
bundle.on('css stream', function (stream) {
// consume stream... here's the collected css
rawBody(stream, (err, buffer) => {
var css = buffer.toString('utf8');
});
});
bundle.plugin(postcssify, {
// run before icss modules processed
before: [
require('postcss-mixins'), // must be before nested
require('postcss-nested'),
],
// run after icss compilation, on complete css bundle
after: [
require('postcss-calc'),
require('postcss-discard-duplicates'),
require('autoprefixer'),
],
});
bundle.add('index.js'));
Browserify usage
example.css
:local .dialog {
background-color: red;
}
index.js
const style = require('./example.css');
var html = `
<div class="${style.dialog}">
lorem ipsum
</div>`;
document.body.innerHTML = html;
Motivation
Similar solutions already exist, but
- depends on a "verbose" css-modules-loader-core
- still runs postcss-icss v^1.0.0 plugins