Library exporting Bulma sass variables which can be used in Webpack project.

  • By Alexandre Paradis
  • Last update: Jul 20, 2021
  • Comments: 1

bulma-variables-export

Library exporting Bulma sass variables which can be used in Webpack project. Bulma variables can be imported into any Javascript/Typescript project.

Bulma.io

Quick install

NPM

npm install bulma-variables-export

Webpack Setup

When working with Javascript/Typescript and Sass, sometimes you want to be able to share variables defined in stylesheets with your code. This is actually pretty simple with Webpack.

First make sure webpack is set up to import scss:

// webpack.config.js
module.exports = {
  ...
  module: {
    rules: [{
      test: /\.scss$/,
      use: [{
        loader: "style-loader" // creates style nodes from JS strings
      }, {
        loader: "css-loader" // translates CSS into CommonJS
      }, {
        loader: "sass-loader" // compiles Sass to CSS
      }]
    }]
  }
};

import

Now you can import any Bulma variables in your project.

You can import every variables using:

import variables from 'bulma-variables-export'

You can also import specific set of variables using:

import initialVariables from 'bulma-variables-export/sass/initial-variables.scss'
import derivedVariables from 'bulma-variables-export/sass/derived-variables.scss'
import controlsVariables from 'bulma-variables-export/sass/controls-variables.scss'

Usage

Usage in your code is very simple. The variables name are exactly defined as Bulma but in camelCase.

import variables from 'bulma-variables-export'
// *OR*
// variables = require('bulma-variables-export');

console.log(variables.black)
console.log(variables.familyMonospace)
console.log(variables.weightMedium)

Github

https://github.com/service-paradis/bulma-variables-export

Comments(1)

  • 1

    Exported object is always empty since an upgrade of Vue Cli services

    Describe the bug I was using this package for quite a while to import initial Bulma variables for the CSS device breakpoints. Since I upgraded the vue-cli services to 5.0.4 the package doesn't seem to work anymore. I am not quite sure, which of the dependencies that were upgraded has broken it (sass-loader?) but the exported object is always empty for me.

    vue.config.js

    module.exports = {
      productionSourceMap: false,
      css: {
        loaderOptions: {
          scss: {
            additionalData: "@import \"@/css/bulmaVariables.scss\";",
          },
        },
      },
    
      configureWebpack: {
        devtool: "source-map",
        module: {
          rules: [
          ],
        },
      },
    
    };
    

    So nothing really special here.

    component.vue

    <template>
    ...
    </template>
    
    <script>
    import initialVariables from "bulma-variables-export/sass/initial-variables.scss";
    console.log(initialVariables);
    
    export default {
    ... 
    }
    
    </script>
    
    <style lang="scss" scoped>
    ...
    </style>
    

    Expected behavior The inital variables object should contain all the variables that Bulma sets and this package exports.

    Actual behavior The object is just empty

    Screenshots grafik

    Desktop (please complete the following information):

    • OS: Linux Manjaro
    • Browser Firefox
    • Version 100

    Additional context package.json:

    {
     //...
      "dependencies": {
        "buefy": "^0.9.20",
        "bulma-variables-export": "^0.2.0",
        "core-js": "^3.22.5",
        "luxon": "^1.28.0",
        "vue": "^2.6.14",
        "vue-router": "^3.5.4",
        "vue-static": "0.0.5",
        "vuex": "^3.6.2"
      },
      "devDependencies": {
        "@vue/cli-plugin-babel": "^5.0.4",
        "@vue/cli-plugin-eslint": "^5.0.4",
        "@vue/cli-plugin-router": "^5.0.4",
        "@vue/cli-plugin-vuex": "^5.0.4",
        "@vue/cli-service": "^5.0.4",
        "@vue/eslint-config-airbnb": "^5.3.0",
        "babel-eslint": "^10.1.0",
        "eslint": "^7.32.0",
        "eslint-plugin-import": "^2.26.0",
        "eslint-plugin-vue": "^7.20.0",
        "fibers": "^5.0.1",
        "sass": "^1.51.0",
        "sass-loader": "^12.6.0",
        "vue-template-compiler": "^2.6.14"
      }
    }
    
    

    If you need more information to debug this, feel free to ask me