Node module task builder which can be configured by a JSON Object containing the relevant tasks to build.
Node module task builder which can be configured by a JSON Object containing the relevant tasks to build. Now you dont need to write gulp tasks in javascript just feine object then thats it.
Getting Started
. Features
. TODO
npm install gulp-task-builder -D
var builder = require('gulp-task-builder')
var tasks = {
"task1":{src:"path/to/source/files", dest:"path/to/save"}
}
builder.loadTasks(tasks);
builder.runTasks();
with required options
var builder = require('gulp-task-builder')
var tasks = {
"task1":{src:"./src/*.js", ext:".js", dest:"dest"},
"task2":{src:"./packages/*.js", ext:".js", dest:"dest/lib"}
}
builder.loadTasks(tasks);
builder.runTasks();
Compress your files with the compress
option. This function is using
- gulp-uglify for javascript
- gulp-htmlmin for html
- gulp-clean-css for css
- gulp-jsonminify for json
{src:"./src/*.js", ext:".js", dest:"dest", compress:true}
{src:"./src/*.html", ext:".html", dest:"dest", compress:{collapseWhitespace: true}}
{src:"./src/*.css", ext:".css", dest:"dest", compress:{compatibility: 'ie8'}}
{src:"./src/*.json", ext:".json", dest:"dest", compress:true}
for more css
options Click Here
Concatenate (join) your files with the concat
option.
//File name will be task1.js which is the task name
task1:{src:"./src/*.js", ext:".js", dest:"dest", concat:true}
//File name will be jsbundle.js which is the task name
task1:{src:"./src/*.js", ext:".js", dest:"dest", concat:true, name:"jsbundle"}
//JSON
//File name will be jsbundle.json which is the task name
task1:{src:"./src/*.json", ext:".json", dest:"dest", concat:true, name:"jsonbundle"}
Filter your source files with the filter
option.
{src:"./src/*.js", ext:".js", dest:"dest", filter:'!src/vendor'}
{src:"./src/*.js", ext:".js", dest:"dest", filter:['*', '!src/vendor']}
{src:"./src/*.js", ext:".js", dest:"dest", filter:{match:['*', '!src/vendor'], options:{restore:true, passthrough:true, dot:true}}}
{src:"./src/*.js", ext:".js", dest:"dest", filter:function(file){ /*You can access file.cwd, file.base, file.path and file.contents */ }}
restore and passthrough will come very soon.
Rename your destination file or path. You can provide String|Function|Object.
{src:"./src/*.js", ext:".js", dest:"dest", rename:"main/text/ciao/goodbye.md"}
{src:"./src/*.js", ext:".js", dest:"dest", rename:function (path) { path.dirname += "/ciao"; path.basename += "-goodbye"; path.extname = ".md" }}
{src:"./src/*.js", ext:".js", dest:"dest", rename:{dirname: "main/text/ciao", basename: "aloha", prefix: "bonjour-", suffix: "-hola", extname: ".md"}}
Wrap your files or target files with the given headers and footers Object|Array.
{src:"./src/*.js", ext:".js", dest:"dest", wrapper:{header:"this will be header", footer:"this will be footer"}}
{src:"./src/*.js", ext:".js", dest:"dest", wrapper:[{header:"header1", footer:"footer1"}{header:"headerN", footer:"footerN"}]}
You can also log paths contents and other stream options. In case set to true the default value will be contents
{src:"./src/*.js", ext:".js", dest:"dest", log:true}
{src:"./src/*.js", ext:".js", dest:"dest", preLog:true}
{src:"./src/*.js", ext:".js", dest:"dest", preLog:'path'}// Console Paths
You can also disable the save option by setting save:false
{src:"./src/*.js", ext:".js", dest:"dest", save:false}
Each task contains REQUIRED options which can be passed along with OPTIONALS(Flow Control, Plugins, Log Options).
- src (string) Gulp src parameter. Path of your source files. It can be also regEx. More Details.
- dest (string) Gulp dest parameter. Path where you want to save your files. More Details.
- ext (string) extension of file which is defined in
src
option.
- runBefore (string|Array(string)) Define task dependencies which will run before this task.
- save (bool) Set
true
if you want to save your output. Defaulttrue
. - name (string) Recommended. Define unique name of gulp task.
- order (Array(string)) Define flow of execution. Like ['log','filter','compress','concat','wrapper'].
This package is using below pluging
Task | Plugin | Value Type | Description |
---|---|---|---|
Filter | gulp-filter |
|
To filter your files. if you are sending Object then that object should have two properties match and options. See gulp-filter for more details. |
Concat |
|
object contains two properties name and ext. | |
Replace | gulp-replace |
|
Object can be one of these two objects {target:"", src:""} this will send to gulp-replace and second {buildName:replacement} buildName (string |
Debug | --- | Boolean | true, false |
Wrapper | gulp-wrapper |
|
Each Object has two options header and footer. More Details |
Harmony/ES2015 | --- | Boolean | Set it true if you need ES6 support too. More Details |
Rename | gulp-rename |
|
You can edit the name or edit the path of your destination file. More Details |
Compress |
|
this will use gulp-uglify if ext is .js , gulp-htmlmin if ext is .html and gulp-clean-css if css is .css |
- log (string|bool) log/console content of stream. All options of glob-stream are supported. Default value is
contents
. - preLog (bool) console stream before processing. same as
log
above. - postLog (bool) console stream just before save(
gulp.dest
function) stream. same aslog
above. - get (function) Just in case if you want to get stream.NOTE it will not effect the stream.
- Use pums instead of pipe in tasks Reason and package
- Use uglify-es instead of uglify-js-harmony
MIT