0.3.2 • Published 10 years ago

mandragora-bucket v0.3.2

Weekly downloads
1
License
Apache 2.0
Repository
github
Last release
10 years ago

mandragora-bucket

Build Status

Dependencies

  • nodejs > 0.12
  • globally installed gulp

The purpose

mandragora-bucket provides bunch of gulp tasks that covers almost all needs of purescript project.

It can

  • build projects via psc or psc-make
  • bundle psc-maked or psced projects with browserify
  • test projects with karma and check coverage with istanbul
  • manage projects that have multiple entry points.
  • watch psc-make and karma builds
  • produce docs

How to use it

default directory structure

root
  - src/  -- Source code
  - test/ -- Tests code
  - dist/ -- temporary directory
    - node_modules -- symlinks to project node_modules/ and psc-maked src
    - entry-foo.js -- browserify entry one
    - entry-bar.js -- browserify entry two
    - test-main.js -- browserify test entry
  - bower_components/ 
  - node_modules/ 
  - MODULES.md -- generated docs
  - bower.json
  - package.json 

default config

{
  paths: {
    bower: [
      'bower_components/purescript-*/src/**/*.purs',
      'bower_components/purescript-*/purescript-*/src/**/*.purs'
    ],
    src: ['src/**/*.purs'],
    test: ['test/**/*.purs'],
    docs: {
      dest: 'MODULES.md'
    }
  },
  tmpDir: 'dist'
}
  • It takes paths.bower and paths.src to compile and watch in main tasks.
  • It takes paths.bower, paths.src and paths.test for test tasks.
  • gulp docs emits documentation to paths.docs.dest
  • Temporary directory is tmpDir

minimal user config

{
    entries: {
        "Main": {
            "name": "build",
            "dir": "public"
        }
    }
}

Merging this config with default will add tasks that compile module Main, bundle results (for psc-make) and put it to public directory.

multiple entries config

{
    "Entries.File": {
        "name": "file",
        "dir": "public"
    },
    "Entries.Notebook": {
        "name": "notebook",
        "dir": "public"
    }
}

This config will add tasks for both Entries.File and Entries.Notebook.

using it in gulpfile

var mandragora = require("mandragora-bucket"),
    gulp = require("gulp");

mandragora.config.entries = {
    "Entry": {
        "name": "result",
        "dir": "out"
    }
};

// use mandragora.config as default

mandragora(gulp);

// or provide config as second argument

mandragora(gulp, {
    paths: {
        bower: ["bower_components/purescript-*/src/**/*.purs"],
        src: ["my/src"],
        test: ["my/test"],
        docs: {dest: "OTHER.md"},
    },
    tmpDir: "tmp",
    entries: {
        "Main": {
            name: "result",
            dir: "out"
        }
    }
});

Produced tasks

Call to mandragora.define(gulp) or mandragor.define(gulp, config) will produce following tasks:

  • gulp bundle-test -- psc-make Test.Main entry and cover all file from src with istanbul
  • gulp karma -- run tests in karma
  • gulp cover -- run tests in karma and send statictics to coveralls
  • gulp watch-test -- watch test and project sources, recompile it by gulp bundle-test

For each of entry in config.entries i.e.

{
    "Foo.Bar": {
        "name": "baz",
        "dir": "out"
    }
}

suffix will be foo-bar

  • gulp make -- run psc-make
  • gulp entries -- make entry files for browserify
  • gulp psci -- produce .psci_modules for sources
  • gulp docs -- emit docs
  • gulp prod-suffix -- run psc
  • gulp bundle-suffix -- bundle this entry
  • gulp bundle-prod-suffix -- bundle psc result with it npm dependencies
  • gulp deploy-suffix -- compile via psc-make, bundle it, move to entry.dir as entry.name + ".js"
  • gulp deploy-prod-suffix -- compile via psc, bundle it, move to entry.dir as entry.name + ".js"
  • gulp watch-suffix -- run gulp deploy-suffix on source change
  • gulp bundle-prod -- compile all entries by psc and then bundle it

Notes

  • Tasks for testing will cause exception if there is no Test.Main module.
  • gulp deploy-prod should run after gulp bundle-prod and move all its results to target directories. It doesn't.
0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.5

10 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago