mandragora-bucket
v0.3.2
Published
Bunch of gulp tasks for purescript projects
Readme
mandragora-bucket
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
pscorpsc-make - bundle
psc-maked orpsced projects with browserify - test projects with karma and check coverage with istanbul
- manage projects that have multiple entry points.
- watch
psc-makeandkarmabuilds - 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.bowerandpaths.srcto compile and watch in main tasks. - It takes
paths.bower,paths.srcandpaths.testfor test tasks. gulp docsemits documentation topaths.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-makeTest.Mainentry and cover all file from src with istanbulgulp karma-- run tests inkarmagulp cover-- run tests inkarmaand send statictics tocoverallsgulp watch-test-- watch test and project sources, recompile it bygulp bundle-test
For each of entry in config.entries i.e.
{
"Foo.Bar": {
"name": "baz",
"dir": "out"
}
}suffix will be foo-bar
gulp make-- runpsc-makegulp entries-- make entry files for browserifygulp psci-- produce.psci_modulesfor sourcesgulp docs-- emit docsgulp prod-suffix-- runpscgulp bundle-suffix-- bundle this entrygulp bundle-prod-suffix-- bundlepscresult with it npm dependenciesgulp deploy-suffix-- compile viapsc-make, bundle it, move toentry.dirasentry.name + ".js"gulp deploy-prod-suffix-- compile viapsc, bundle it, move toentry.dirasentry.name + ".js"gulp watch-suffix-- rungulp deploy-suffixon source changegulp bundle-prod-- compile all entries bypscand then bundle it
Notes
- Tasks for testing will cause exception if there is no
Test.Mainmodule. gulp deploy-prodshould run aftergulp bundle-prodand move all its results to target directories. It doesn't.
