broccoli-materialize

Broccoli plugin for making materialize a umd module

Usage no npm install needed!

<script type="module">
  import broccoliMaterialize from 'https://cdn.skypack.dev/broccoli-materialize';
</script>

README

Broccoli-materialize

Materialize [http://materializecss.com/] has a weird way of setting up their distro that basically makes it impossible to use for amd, so after I made it work in my project I decided to make a plugin to make my brocfile a little less ugly.

Install

npm install --save-dev broccoli-materialize

Usage in Brocfile.js

var path = require('path')
var Funnel = require('broccoli-funnel');
var BroccoliMaterialize = require('broccoli-materialize');
var findup = require('findup');

var materializeRootPath = findup.sync(require.resolve('materialize-css'), 'package.json');
var materialize = new BroccoliMaterialize(materializeRootPath);
materialize = new Funnel(materialize, {
    destDir: 'materialize'
});
module.exports = [materialize];

This will generate a file structure like so:

- materialize
    - js
        - materialize.js
        - hammer.min.js
        - jquery.easing.1.3.js
        - jquery.hammer.js
        - velocity.min.js
        - date_picker
            - picker.js
            - picker.date.js
    - css
        ...
    - fonts
        ...

RequireJS config

I'm using this with amd modules, and I had to modify my require config like so:

window.require = {
    shim: {
        "jquery.easing": ["jquery"],
        "velocity": ["jquery"]
    },
    paths: {
        "jquery.easing": "/path/to/materialize/js/jquery.easing.1.3",
        "jquery.hammer": "/path/to/materialize/js/jquery.hammer",
        "velocity": "/path/to/materialize/js/velocity.min",
        "hammerjs": "/path/to/materialize/js/hammer.min",
        "picker": "/path/to/materialize/js/date_picker/picker",
        "picker.date": "/path/to/materialize/js/date_picker/picker.date",
        "materialize": "/path/to/materialize/js/materialize"
    }
}

Issues

Just make an issue, or a Pull Request.