gulp-easy
Npm package for fast and easy compile js, less and other files with gulp.
Install
npm install --save-dev gulp gulp-easy
Tasks and production mode
Module gulp-easy export two public tasks:
default
for developer (with watch and without compress);production
for production builds.
Also you can append argument --production
for production builds:
node $SOURCE_DIR/node_modules/gulp/bin/gulp.js --gulpfile $SOURCE_DIR/gulpfile.js --production
Configuration
Configuration in gulp-easy
is optional, but you can set in through config()
method:
require('gulp-easy')(require('gulp'))
.config({
dest: './app/dest',
less: {
minifycss: {
compatibility: 'ie7'
}
}
})
.less(/* ... */)
Also each task method (js
, less
, files
, ..) have config argument for overwrite config:
require('gulp-easy')(require('gulp'))
.config({
dest: './app/dest'
})
.less('less/index.less', 'public/app.css', {
minifycss: {
compatibility: 'ie7'
}
})
Default config (without methods configs):
{
dest: 'public', // destination folder
name: 'app', // default destination file name
compress: null, // auto, `true` in production
watch: null, // auto, `false` in production
}
Examples of gulpfile.js file
Most minimalistic gulp file. Default file name is app
, default destination dir is public
.
The task performs:
- Compile
less/index.less
file with it imports to csspublic/app.css
. - Concat and compile as common js all javascript files from folder
js
to filepublic/app.js
. - Copy all files from folder
images
(recursive) to folderpublic/images
.
require('gulp-easy')(require('gulp'))
.less('less/index.less')
.js('js/*.js')
.files('images/**/*', 'public/images/')
Normal gulp file without defaults. You can many call api methods for create tasks. The task performs:
- Concat and compile less files
less/header.less
,less/header.less
to cssapp/public/style.css
. Destination folder specified in config. - Compile as common js file
js/app1/index.js
to fileapp/public/lib/main.js
. - Compile as common js file
js/app2/index.js
to fileapp/public/lib/main-two.js
. - Run custom task for copy all files from folder
images
to folderpublic/images2
.
require('gulp-easy')(require('gulp'))
.config({
dest: 'app/public'
})
.less(['less/header.less', 'less/main.less'], 'style.css')
.js('js/app1/index.js', 'app/public/lib/main.js')
.js('js/app2/index.js', 'app/public/lib/main-two.js')
.task(function(gulp, taskName, isCompress, isWatch) {
gulp.src(['images/*']).pipe(gulp.dest('public/images2/'));
}, function(gulp, taskName, isCompress) {
gulp.watch(['images/*'], [taskName]);
})
Methods api
js(src, dest, config)
Compile javascript files to bundle
src
: string or array strings, glob format;dest
: (optional) string file name or path to destination (output) file;config
: (optional) custom configuration object. Default configuration is:
{
browserify: {}, // browserify config
uglify: {}, // uglify config
gzip: {}, // gzip config
transforms: [stringify] // browserify transforms
}
Method do:
- compile common js code with
browserify
and ittransforms
- write sourcemap, when
compress
is disable - compress by
uglify
, whencompress
is enable - create gzip file, when
compress
is enable
less(src, dest, config)
Compile less to css
src
: string or array strings, glob format;dest
: (optional) string file name or path to destination (output) file;config
: (optional) custom configuration object. Default configuration is:
Method do:
- process less to css
- concat files to one
- minify by
minifycss
module, whencompress
is enable - write sourcemap, when
compress
is disable - create gzip file, when
compress
is enable
{
gzip: {}, // gzip config
minifycss: { // `gulp-minify-css` config
compatibility: 'ie9'
}
}
files(src, dest)
Copy files
src
: string or array strings, glob format;dest
: (optional) string file name or path to destination (output) file;
Method do:
- copy source files to destination folder
task(taskHandler, watchHandler)
Add custom task
taskHandler(gulp, taskName, isCompress, isWatch
: custom function for create gulp task;watchHandler(gulp, taskName, isCompress)
: (optional) custom function for watch on sources;
Handlers arguments:
gulp
: gulp instancetaskName
: string, auto generated task name (in format_taskXX
). Use it for run task on watchisCompress
: boolean, seecompress
param in config sectionisWatch
: boolean, seewatch
param in config section