Last active
May 24, 2017 21:43
-
-
Save EudesSilva/59d3ee00b866229e655dea510dd15c23 to your computer and use it in GitHub Desktop.
various util plugins from gulp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# npm install --save-dev gulp-connect | |
//LiveReload | |
var gulp = require('gulp'), | |
connect = require('gulp-connect'); | |
gulp.task('connect', function() { | |
connect.server({ | |
root: 'app', | |
livereload: true | |
}); | |
}); | |
gulp.task('html', function () { | |
gulp.src('./app/*.html') | |
.pipe(connect.reload()); | |
}); | |
gulp.task('watch', function () { | |
gulp.watch(['./app/*.html'], ['html']); | |
}); | |
gulp.task('default', ['connect', 'watch']); | |
//Start and stop server | |
gulp.task('jenkins-tests', function() { | |
connect.server({ | |
port: 8888 | |
}); | |
// run some headless tests with phantomjs | |
// when process exits: | |
connect.serverClose(); | |
}); | |
//Multiple server | |
var gulp = require('gulp'), | |
stylus = require('gulp-stylus'), | |
connect = require('gulp-connect'); | |
gulp.task('connectDev', function () { | |
connect.server({ | |
name: 'Dev App', | |
root: ['app', 'tmp'], | |
port: 8000, | |
livereload: true | |
}); | |
}); | |
gulp.task('connectDist', function () { | |
connect.server({ | |
name: 'Dist App', | |
root: 'dist', | |
port: 8001, | |
livereload: true | |
}); | |
}); | |
gulp.task('html', function () { | |
gulp.src('./app/*.html') | |
.pipe(connect.reload()); | |
}); | |
gulp.task('stylus', function () { | |
gulp.src('./app/stylus/*.styl') | |
.pipe(stylus()) | |
.pipe(gulp.dest('./app/css')) | |
.pipe(connect.reload()); | |
}); | |
gulp.task('watch', function () { | |
gulp.watch(['./app/*.html'], ['html']); | |
gulp.watch(['./app/stylus/*.styl'], ['stylus']); | |
}); | |
gulp.task('default', ['connectDist', 'connectDev', 'watch']); | |
# npm install --save-dev gulp-json2js | |
var json2js = require('gulp-json2js'); | |
var rename = require("gulp-rename"); | |
var data = require('gulp-data'); | |
gulp.task('generateJS', function() { | |
gulp.src('./data/localModel.js') | |
.pipe(rename('local.js')) | |
.pipe(data(function(file) { | |
delete require.cache['./data/local.json']; | |
return require('./data/local.json'); | |
})) | |
.pipe(json2js()) | |
.pipe(gulp.dest('./data/')) | |
}); | |
# npm install --save-dev gulp-imagemin | |
const gulp = require('gulp'); | |
const imagemin = require('gulp-imagemin'); | |
gulp.task('default', () => | |
gulp.src('src/images/*') | |
.pipe(imagemin()) | |
.pipe(gulp.dest('dist/images')) | |
); | |
//OR | |
.pipe(imagemin([ | |
imagemin.gifsicle({interlaced: true}), | |
imagemin.jpegtran({progressive: true}), | |
imagemin.optipng({optimizationLevel: 5}), | |
imagemin.svgo({plugins: [{removeViewBox: true}]}) | |
# npm install --save-dev gulp-zip | |
const gulp = require('gulp'); | |
const zip = require('gulp-zip'); | |
gulp.task('default', () => | |
gulp.src('src/*') | |
.pipe(zip('archive.zip')) | |
.pipe(gulp.dest('dist')) | |
); | |
# npm install --save-dev gulp-sourcemaps | |
var gulp = require('gulp'); | |
var concat = require('gulp-concat'); | |
var sourcemaps = require('gulp-sourcemaps'); | |
gulp.task('javascript', function() { | |
return gulp.src('src/**/*.js') | |
.pipe(sourcemaps.init()) | |
.pipe(concat('all.js')) | |
.pipe(sourcemaps.write()) | |
.pipe(gulp.dest('dist')); | |
}); | |
# npm install --save-dev gulp-concat | |
// opt 1 | |
var concat = require('gulp-concat'); | |
gulp.task('scripts', function() { | |
return gulp.src('./lib/*.js') | |
.pipe(concat('all.js')) | |
.pipe(gulp.dest('./dist/')); | |
}); | |
// opt 2 | |
var concat = require('gulp-concat'); | |
gulp.task('scripts', function() { | |
return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js']) | |
.pipe(concat('all.js')) | |
.pipe(gulp.dest('./dist/')); | |
}); | |
// opt 3 | |
var concat = require('gulp-concat'); | |
gulp.task('scripts', function() { | |
return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js']) | |
.pipe(concat({ path: 'new.js', stat: { mode: 0666 }})) | |
.pipe(gulp.dest('./dist')); | |
}); | |
# npm install --save-dev gulp-nodemon | |
var gulp = require('gulp') | |
, nodemon = require('gulp-nodemon') | |
, jshint = require('gulp-jshint') | |
gulp.task('lint', function () { | |
gulp.src('./**/*.js') | |
.pipe(jshint()) | |
}) | |
gulp.task('develop', function () { | |
var stream = nodemon({ script: 'server.js' | |
, ext: 'html js' | |
, ignore: ['ignored.js'] | |
, tasks: ['lint'] }) | |
stream | |
.on('restart', function () { | |
console.log('restarted!') | |
}) | |
.on('crash', function() { | |
console.error('Application has crashed!\n') | |
stream.emit('restart', 10) // restart the server in 10 seconds | |
}) | |
}) | |
# npm install --save-dev vinyl-elasticsearch | |
var gulp = require('gulp'); | |
var elasticsearch = require('vinyl-elasticsearch'); | |
gulp.task('search', function() { | |
return elasticsearch.src( | |
{ | |
index: 'someindex', | |
size: 0, | |
body: { | |
// Begin query. | |
query: { | |
// Boolean query for matching and excluding items. | |
bool: { | |
must: [{match: {'somefield': 'somevalue'}}] | |
} | |
}, | |
// Aggregate on the results | |
aggs: { | |
actions: { | |
terms: { | |
field: 'additionalType', | |
order: {'_term' : 'asc'}, | |
size: 10, | |
} | |
} | |
} | |
} | |
}, | |
{ | |
host: 'https://localhost:9200', | |
log: 'trace' | |
} | |
) | |
.pipe(echo()); | |
}); | |
# npm install --save-dev gulp-rename | |
var rename = require("gulp-rename"); | |
// rename via string | |
gulp.src("./src/main/text/hello.txt") | |
.pipe(rename("main/text/ciao/goodbye.md")) | |
.pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/goodbye.md | |
// rename via function | |
gulp.src("./src/**/hello.txt") | |
.pipe(rename(function (path) { | |
path.dirname += "/ciao"; | |
path.basename += "-goodbye"; | |
path.extname = ".md" | |
})) | |
.pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/hello-goodbye.md | |
// rename via hash | |
gulp.src("./src/main/text/hello.txt", { base: process.cwd() }) | |
.pipe(rename({ | |
dirname: "main/text/ciao", | |
basename: "aloha", | |
prefix: "bonjour-", | |
suffix: "-hola", | |
extname: ".md" | |
})) | |
.pipe(gulp.dest("./dist")); // ./dist/main/text/ciao/bonjour-aloha-hola.md | |
# npm install --save-dev del | |
const del = require('del'); | |
del(['tmp/*.js', '!tmp/unicorn.js']).then(paths => { | |
console.log('Deleted files and folders:\n', paths.join('\n')); | |
}); | |
// OR | |
del.sync(['public/assets/**', '!public/assets/goat.png']); | |
# npm install --save-dev gulp-uglify | |
var gulp = require('gulp'); | |
var uglify = require('gulp-uglify'); | |
var pump = require('pump'); | |
gulp.task('compress', function (cb) { | |
pump([ | |
gulp.src('lib/*.js'), | |
uglify(), | |
gulp.dest('dist') | |
], | |
cb | |
); | |
}); | |
# npm install --save-dev gulp-if | |
var gulpif = require('gulp-if'); | |
var uglify = require('gulp-uglify'); | |
var condition = true; // TODO: add business logic | |
gulp.task('task', function() { | |
gulp.src('./src/*.js') | |
.pipe(gulpif(condition, uglify())) | |
.pipe(gulp.dest('./dist/')); | |
}); | |
// OR Ternary | |
var gulpif = require('gulp-if'); | |
var uglify = require('gulp-uglify'); | |
var beautify = require('gulp-beautify'); | |
var condition = function (file) { | |
// TODO: add business logic | |
return true; | |
} | |
gulp.task('task', function() { | |
gulp.src('./src/*.js') | |
.pipe(gulpif(condition, uglify(), beautify())) | |
.pipe(gulp.dest('./dist/')); | |
}); | |
# npm install --save-dev gulp-git | |
var gulp = require('gulp'); | |
var git = require('gulp-git'); | |
// Run git init | |
// src is the root folder for git to initialize | |
gulp.task('init', function(){ | |
git.init(function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git init with options | |
gulp.task('init', function(){ | |
git.init({args: '--quiet --bare'}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git add | |
// src is the file(s) to add (or ./*) | |
gulp.task('add', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.add()); | |
}); | |
// Run git add with options | |
gulp.task('add', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.add({args: '-f -i -p'})); | |
}); | |
// Run git commit | |
// src are the files to commit (or ./*) | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit('initial commit')); | |
}); | |
// Run git commit with options | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit('initial commit', {args: '-A --amend -s'})); | |
}); | |
// Run git commit without checking for a message using raw arguments | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit(undefined, { | |
args: '-m "initial commit"', | |
disableMessageRequirement: true | |
})); | |
}); | |
// Run git commit without appending a path to the commits | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit('initial commit', { | |
disableAppendPaths: true | |
})); | |
}); | |
// Run git commit, passing multiple messages as if calling | |
// git commit -m "initial commit" -m "additional message" | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit(['initial commit', 'additional message'])); | |
}); | |
// Run git commit, emiting 'data' event during progress | |
// This is useful when you have long running githooks | |
// and want to show progress to your users on screen | |
gulp.task('commit', function(){ | |
return gulp.src('./git-test/*') | |
.pipe(git.commit('initial commit', {emitData:true})) | |
.on('data',function(data) { | |
console.log(data); | |
}); | |
}); | |
// Run git remote add | |
// remote is the remote repo | |
// repo is the https url of the repo | |
gulp.task('addremote', function(){ | |
git.addRemote('origin', 'https://github.com/stevelacy/git-test', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git remote remove | |
// remote is the remote repo | |
gulp.task('removeremote', function(){ | |
git.removeRemote('origin', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git push | |
// remote is the remote repo | |
// branch is the remote branch to push to | |
gulp.task('push', function(){ | |
git.push('origin', 'master', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git push with options | |
// branch is the remote branch to push to | |
gulp.task('push', function(){ | |
git.push('origin', 'master', {args: " -f"}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git push with multiple branches and tags | |
gulp.task('push', function(){ | |
git.push('origin', ['master', 'develop'], {args: " --tags"}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git pull | |
// remote is the remote repo | |
// branch is the remote branch to pull from | |
gulp.task('pull', function(){ | |
git.pull('origin', 'master', {args: '--rebase'}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git pull from multiple branches | |
gulp.task('pull', function(){ | |
git.pull('origin', ['master', 'develop'], function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git fetch | |
// Fetch refs from all remotes | |
gulp.task('fetch', function(){ | |
git.fetch('', '', {args: '--all'}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Run git fetch | |
// Fetch refs from origin | |
gulp.task('fetch', function(){ | |
git.fetch('origin', '', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Clone a remote repo | |
gulp.task('clone', function(){ | |
git.clone('https://github.com/stevelacy/gulp-git', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Clone remote repo to sub folder ($CWD/sub/folder/git-test) | |
gulp.task('clonesub', function() { | |
git.clone('https://github.com/stevelacy/git-test', {args: './sub/folder'}, function(err) { | |
// handle err | |
}); | |
}); | |
// Tag the repo with a version | |
gulp.task('tag', function(){ | |
git.tag('v1.1.1', 'Version message', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Tag the repo with a version and empty message | |
gulp.task('tag', function(){ | |
git.tag('v1.1.1', '', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Tag the repo With signed key | |
gulp.task('tagsec', function(){ | |
git.tag('v1.1.1', 'Version message with signed key', {signed: true}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Create a git branch | |
gulp.task('branch', function(){ | |
git.branch('newBranch', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Checkout a git branch | |
gulp.task('checkout', function(){ | |
git.checkout('branchName', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Create and switch to a git branch | |
gulp.task('checkout', function(){ | |
git.checkout('branchName', {args:'-b'}, function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Merge branches to master | |
gulp.task('merge', function(){ | |
git.merge('branchName', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Reset a commit | |
gulp.task('reset', function(){ | |
git.reset('SHA', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
// Git rm a file or folder | |
gulp.task('rm', function(){ | |
return gulp.src('./gruntfile.js') | |
.pipe(git.rm()); | |
}); | |
gulp.task('addSubmodule', function(){ | |
git.addSubmodule('https://github.com/stevelacy/git-test', 'git-test', { args: '-b master'}); | |
}); | |
gulp.task('updateSubmodules', function(){ | |
git.updateSubmodule({ args: '--init' }); | |
}); | |
// Working tree status | |
gulp.task('status', function(){ | |
git.status({args: '--porcelain'}, function (err, stdout) { | |
if (err) throw err; | |
}); | |
}); | |
// Other actions that do not require a Vinyl | |
gulp.task('log', function(){ | |
git.exec({args : 'log --follow index.js'}, function (err, stdout) { | |
if (err) throw err; | |
}); | |
}); | |
// Git clean files | |
gulp.task('clean', function() { | |
git.clean({ args: '-f' }, function (err) { | |
if(err) throw err; | |
}); | |
}); | |
// Run gulp's default task | |
gulp.task('default',['add']); | |
# npm install --save-dev yargs | |
// short.js | |
var argv = require('yargs').argv; | |
console.log('(%d,%d)', argv.x, argv.y); | |
//call | |
// $ ./short.js -x 10 -y 21 | |
//(10,21) | |
# npm install --save-dev gulp-size | |
const gulp = require('gulp'); | |
const size = require('gulp-size'); | |
gulp.task('default', () => | |
gulp.src('fixture.js') | |
.pipe(size()) | |
.pipe(gulp.dest('dist')) | |
); | |
# npm install --save-dev gulp-notify | |
gulp.task("one", function () { | |
return gulp.src("../test/fixtures/1.txt") | |
.pipe(notify()); | |
}); | |
notify.on('click', function (options) { | |
console.log('I clicked something!', options); | |
}); | |
gulp.task("click", function () { | |
// Click event only makes sense if wait is true... | |
return gulp.src("../test/fixtures/1.txt") | |
.pipe(notify({ message: 'Hello 1', wait: true })); | |
}); | |
gulp.task("message", function () { | |
return gulp.src("../test/fixtures/1.txt") | |
.pipe(notify("This is a message.")); | |
}); | |
gulp.task("advanced", function () { | |
return gulp.src("../test/fixtures/*") | |
.pipe(notify({ | |
"title": "Open Github", | |
"subtitle": "Project web site", | |
"message": "Click to open project site", | |
"sound": "Frog", // case sensitive | |
"icon": path.join(__dirname, "gulp.png"), // case sensitive | |
"onLast": true, | |
"wait": true | |
})); | |
}); | |
gulp.task("error", function () { | |
return gulp.src("../test/fixtures/*") | |
.pipe(through.obj(function (file, enc, callback) { | |
this.emit("error", new Error("Something happend: Error message!")); | |
callback(); | |
})) | |
.on("error", notify.onError({ | |
message: 'Error: <%= error.message %>', | |
sound: false // deactivate sound? | |
})) | |
.on("error", function (err) { | |
console.log("Error:", err); | |
}) | |
}); | |
gulp.task("forceGrowl", function () { | |
var custom = notify.withReporter(function (options, callback) { | |
new nn.Growl().notify(options, callback); | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment