1.0.2 • Published 8 years ago

postcssify-icss v1.0.2

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

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

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

css-modulesify