api-explorer
Version:
Easily create an interactive documentation for your RESTful API
132 lines (113 loc) • 3.99 kB
JavaScript
var gulp = require("gulp");
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var bowerFiles = require('gulp-bower-files');
var es = require('event-stream');
var clean = require('gulp-clean');
var concatCss = require('gulp-concat-css');
var minifyCSS = require('gulp-minify-css');
var connect = require('gulp-connect');
var runSequence = require('run-sequence');
var less = require('gulp-less');
var port = 8001;
var paths = {
appScripts: ["app/js/**","bower_components/angular-bootstrap/ui-boostrap.js"],
//specify order
vendorScripts: ["build/lib/jquery/**/*.js", "build/lib/angular/**/*.js", "build/lib/**/*.js"],
appCss: "app/style/css/**/*.css",
bootstrapLess: "bower_components/bootstrap/less/bootstrap.less",
vendorCss: ["build/lib/**/*.css"],
assets: "app/img/*",
less: "app/style/less/**/*.less"
};
gulp.task("default", function(callback) {
runSequence("build", ["server", "watch"], callback);
});
//Deploy bower files
gulp.task("bower", ["bower-files", "vendor", "clean"]);
//build everything
gulp.task("build", ["appScripts", "bower" , "appCss", "copy"
// , "copyLess"
// ,"buildLess"
]);
//Execute the server
gulp.task("server", function() {
return connect.server({
root: 'public',
livereload: true,
port: port
});
});
gulp.task('copyLess', function(){
return gulp.src(paths.less)
.pipe(gulp.dest("bower_components/bootstrap/less"));
});
gulp.task('buildLess', ['copyLess'], function(){
return gulp.src(paths.bootstrapLess)
.pipe(less())
.pipe(gulp.dest('public/css'));
});
/*gulp.task('less', function(){
gulp.src("app/css/style.less").pipe(gulp.dest('bower_components/bootstrap/less'));
return gulp.src(paths.bootstrapLess)
.pipe(less())
.pipe(gulp.dest('public/css'));
});*/
//Minify app js files
gulp.task("appScripts", function() {
return gulp.src(paths.appScripts)
.pipe(concat("app.min.js"))
//.pipe(uglify())
.pipe(gulp.dest("public/js"))
});
//Minify and concat every css from app into app.css
gulp.task("appCss", function() {
return gulp.src(paths.appCss)
.pipe(concatCss("app.min.css"))
.pipe(minifyCSS({keepSpecialComments: 0}))
.pipe(gulp.dest("public/css"));
});
//Minify js files from bower into one vendor.js
gulp.task("vendorScripts", ['bower-files'], function() {
return gulp.src(paths.vendorScripts)
.pipe(concat("vendor.min.js"))
.pipe(uglify())
.pipe(gulp.dest("public/js"))
});
//Same for css files
gulp.task("vendorCss", ["bower-files"], function() {
return gulp.src(paths.vendorCss)
.pipe(concatCss("vendor.min.css"))
.pipe(minifyCSS())
.pipe(gulp.dest("public/css"));
});
//Copy the vendor fonts in the public css folder (bootstrap needs it)
gulp.task("vendorFonts", ["bower-files"], function() {
return gulp.src("build/lib/bootstrap/dist/fonts/**")
.pipe(gulp.dest("public/fonts/"))
});
//Vendor stuff (bower)
gulp.task("vendor", ["vendorScripts", "vendorFonts"]);
//Take the main files from bower_components and put them into build
gulp.task("bower-files", function(){
return bowerFiles().
pipe(gulp.dest("build/lib"));
});
//Clean the build folder when the vendor stuff is finished
gulp.task("clean", ["vendor"], function() {
return gulp.src("build").pipe(clean());
});
//Copy other stuff to public (img, html, etc.)
gulp.task("copy", function() {
return es.merge(
gulp.src("app/**/*.html").pipe(gulp.dest("public")),
gulp.src(paths.assets).pipe(gulp.dest("public/img"))
);
});
//Stuff to watch to redeploy, doesn't work for bower, have to run "gulp bower" to redeploy new packages
gulp.task("watch", function() {
gulp.watch(paths.appCss, ["appCss"]);
gulp.watch(paths.appScripts, ["appScripts"]);
//gulp.watch("bower.json", ["bower"]);
gulp.watch(["app/**/*.html", paths.assets], ["copy"]);
});