A Webpack loader for Bulma, a modern CSS framework based on Flexbox

Bulma Loader

A Webpack loader for Bulma, a modern CSS framework based on Flexbox

When should I use this?

If you want to customize Bulma while using it in CSS modules this loader is for you.

For everyone else who just want to customize Bulma in their project or isn't familiar with CSS modules yet follow step 3 in the official docs: http://bulma.io/documentation/overview/start/

  1. Create a sass file for your Bulma variables.
  2. Add the bulmaLoader after the sass loader.
  3. Configure the loader with the location of your variables file.

Assuming you put your variables here: ./sass/bulma.sass

Configure by query

  test: /\.scss$/,
  loaders: ["style", "css?modules&importLoaders=2", "sass", "bulma?theme=sass/bulma.sass"]

Configure by loader options

Inside your webpack config object:

  [ ... ]
  bulmaLoader: {
    theme: 'sass/bulma.sass'
  plugins: [
      test: /\.scss$/,
      loaders: ["style", "css?modules&importLoaders=2", "sass", "bulma"]

Importing customized Bulma CSS

Assuming your style codebase is already split into modules and local by default:


.hero {
  composes: hero is-fullheight is-success is-bold from 'bulma';
.hero-content {
  composes: hero-content from 'bulma';
  opacity: .9;

.title {
  composes: title is-3 from 'bulma';
.subtitle {
  composes: subtitle is-5 from 'bulma';


import style from './style.scss'

export const Welcome = () => <div className={style.hero}>
  <div className={style['hero-content']}>
    <h1 className={style.title}>Welcome!</h1>
    <h2 className={style.subtitle}>Long time no see :-)</h2>

Importing from 'bulma' will map to ./node_modules/bulma/bulma.sass. You can import from any sass file in bulma by doing this:

.call-to-action {
  composes: button is-primary is-large from 'bulma/sass/elements/button.sass'

You can also import from the CSS file directly like this (and it works without bulma-loader):

.call-to-action {
  composes: button is-primary is-large from 'bulma/css/bulma.css'