Novelty Plastic Moustache
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    mbobpublic

    mbob

    Fast, minimal build system with parallel processes and live-reload server

    Local install

    Install mbob as local dev dependency.

    npm install mbob --save-dev

    Provide npm scripts in package.json.

    "scripts"{
      "build": "mbob build",
      "dev": "mbob",
      "test": "mbob test"
    }

    Create an .mbob file (see below).

    Global install

    Another way is to install it as a global utility.

    npm install mbob -g

    New project

    Run mbob new with a project name.

    mbob new app

    Starter files include:

    • .gitignore
    • .mbob
    • package.json
    • src folder with empty index.js, scss, html

    The only requirement is .mbob in the current working directory.

    Dev dependencies

    Install commands to be used by build tasks, such as babel and node-sass.

    cd app
    npm install

    Use

    Develop

    Start a static file server that will watch files, build and reload on change.

    mbob

    Build

    For production, build minified bundles with no sourcemap.

    mbob build

    There's a shortcut: mbob b

    Configure

    .mbob is a configuration file written in Human JSON.

    Here is an example .mbob with comments.

    # (optional) Define variables: $name, $src, $dest
     
    name: app
    src: src
    dest: build
     
    # (optional) Command to run before build
     
    before: mkdir -p $dest
     
    # Build tasks to run in parallel
     
    build: {
     
      css: {
     
        # Build and dev commands are run from local node_modules/.bin
        # if they're defined as dependencies in package.json
     
        # Build command: minified, no sourcemap
     
        build: node-sass --output-style compressed $in $out
     
        # (optional) dev command: compile with sourcemap
     
        dev: node-sass --source-map-contents --source-map-embed $in -w $out
     
        # (optional) Entry for bundle(s)
     
        entry: {
     
          # (optional) Define variables to pass to build/dev command
     
          in: $src/index.scss
          out: $dest/$name.css
     
          # css entry doesn't need to watch files, because node-sass -w
     
          # watch: $src/**/*.scss
        }
     
        # For multiple bundles, give entry as array: [{ in,out }, { in,out }, ...]
        # build/dev command will be run for each entry
     
      }
     
      html: {
     
        build: html-transform $in $out
     
        # If there is no dev command, the build command will be run on file change
     
        entry: {
          in: $src/index.html
          out: $dest/index.html      
     
          # (optional) Watch files, build and reload on change
     
          watch: $src/*.html
        }
      }
     
      js: {
     
        build: browserify -p [ minifyify --compressPath . --no-map ] -t babelify $in -o $out
     
        dev: watchify -v -d -t babelify $in -o $out
     
        entry: {
     
          in: $src/index.js
          out: $dest/$name.js
     
          # js entry doesn't need to watch files, because watchify
     
          # watch: $src/**/*.js
        }
      }
    }
     
    # Static file server
     
    serve: {
     
      # Serve from this directory
     
      from: $dest
     
      # Serve at localhost port
     
      port: 3000
     
      # Reload when js bundle is compiled
     
      reload: [
        $dest/*.js
      ]
     
      # Reload CSS when css bundle is compiled
      # This will apply new styles without reloading the browser
     
      reloadCSS: [
        $dest/*.css  
      ]
    }

    Keywords

    none

    install

    npm i mbob

    Downloadslast 7 days

    7

    version

    0.1.3

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar