Require css from your js files in your Browserify project and obfuscate class names in each stylesheet with a prefix to avoid collisions.
npm install sportsokken
Wrap your Browserify instance in sportsokken(). This function returns the Browserify instance so you can use all its methods after wrapping it.
var gulp = require("gulp");
var browserify = require("browserify");
var source = require("vinyl-source-stream");
var hbsfy = require("hbsfy");
var sportsokken = require("sportsokken");
gulp.task("default", function() {
return sportsokken(browserify("./src/main.js"))
.transform(hbsfy)
.bundle()
.pipe(source("bundle.js"))
.pipe(gulp.dest("./out/js"));
});
my-module.css
.root {
padding: 20px;
background: red;
}
.head {
font-size: 30px;
font-weight: bold;
}
.body {
line-height: 1.5;
}
my-module.hbs
<div class="{{css.root}}">
<div class="{{css.head}}">
My Module
</div>
<div class="{{css.body}}">
This is my module
</div>
</div>
MyModule.js
var css = require("./my-module.css");
var template = require("./my-module.hbs");
template({
css: css
});
Note than you can create a new stylesheet for another module and use the same css class names (.root, .head etc) without worrying about collisions.