Friday, 1 April 2016

Gulp JS....gulpfile.js example


var gulp = require('gulp');
var clean = require('gulp-clean');
var minify = require('gulp-minify');
var cssmin = require('gulp-cssmin');
var rename = require("gulp-rename");
var concat = require('gulp-concat');
var imageop = require('gulp-image-optimization');
var ngHtml2Js = require("gulp-ng-html2js");
var minifyHtml = require("gulp-minify-html");

// default task
gulp.task('default', ['build']);

// build task
gulp.task('build', [
    'clean', // clean the build
    'copy-html', // copy index.html to /dist folder
    'copy-assets', // copy all assets to /dist folder
    'copy-js', // copy all js files to /dist folder
    'concat-js', // concat all application js to app.js file
    'copy-css', // copy all css to
    'minify-js', // minify all js files in /dist/js folder
    'minify-css', // minify all css files in /dist/style folder
    'rename-css', // rename css files with .min prefix
    'clean-junk', // remove other junk files
    'image-opt', // image optimization
    'partials' // create html to js for all .template.html files
]);

// clean dist folder
gulp.task('clean', function () {
    return gulp.src('./dist')
        .pipe(clean());
});

// copy html to dist folder
gulp.task('copy-html', ['clean'], function () {
    return gulp.src('./src/index.html')
        .pipe(gulp.dest('./dist'));
});

// copy assets to dist folder
gulp.task('copy-assets', ['clean'], function () {
    return gulp.src(['./src/assets/**/*.*', '!./src/assets/**/*.css'])
        .pipe(gulp.dest('./dist'));
});

// copy all js files to dist folder after minification
gulp.task('copy-js', ['clean'], function () {
    return gulp.src(['./node_modules/angular/angular.js',
              './node_modules/angular-material/angular-material.js'])
        .pipe(gulp.dest('./dist/js'));
});

// list all application js files
var appJS = [
    './src/common/global.js',  
    './src/common/constants.js',
    './src/app/app.module.js',  
    './src/app/app.config.js',
    './src/app/app.route.js',
    './src/app/app.run.js',
    './src/app/app.controller.js'
];

// concat all application js files
gulp.task('concat-js', ['clean'], function () {
    return gulp.src(appJS)
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./dist/js'));
});

// copy all css files to dist folder
gulp.task('copy-css', ['clean'], function () {
    return gulp.src(['./node_modules/angular-material/angular-material.min.css', './src/assets/style/*.css'])
        .pipe(gulp.dest('./dist/style'));
});

// minify all js files
gulp.task('minify-js', ['clean', 'copy-js', 'concat-js', 'partials'], function () {
    return gulp.src('./dist/js/*.js')
        .pipe(minify({
            ext: {
                src: '.debug.js',
                min: '.min.js'
            },
        }))
        .pipe(gulp.dest('./dist/js'));
});

// minify all css files
gulp.task('minify-css', ['clean', 'copy-css'], function () {
    return gulp.src('./dist/style/*.css')
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/style'));
});

// rename all css files with .min
gulp.task('rename-css', ['clean', 'minify-css'], function () {
    return gulp.src(['./dist/style/*.css', '!./dist/style/*.min.css'])
        .pipe(rename(function (path) {
            path.basename += ".min";
        }))
        .pipe(gulp.dest('./dist/style'));
});

// rename all js files with .min
gulp.task('rename-js', ['clean', 'minify-js', 'concat-js'], function () {
    return gulp.src(['./dist/js/*.js', '!./dist/js/*.min.js'])
        .pipe(rename(function (path) {
            path.basename += ".min";
        }))
        .pipe(gulp.dest('./dist/js'));
});

// clean extra junk files from dist
gulp.task('clean-junk', ['clean', 'minify-css', 'minify-js'], function () {
    return gulp.src(['./dist/js/*.js', './dist/style/*.css', '!./dist/js/*.min.js','!./dist/js/*.debug.js' ,'!./dist/style/*.min.css'])
        .pipe(clean());
});

// image optimization
gulp.task('image-opt', ['copy-assets'], function () {
    return gulp.src('./dist/img/*.*')
        .pipe(imageop({
            optimizationLevel: 5,
            progressive: true,
            interlaced: true
        }))
        .pipe(gulp.dest('./dist/img'));
});

// convert templates to js file
gulp.task('partials', ['clean'], function () {
    return gulp.src("./src/**/*.template.html")
        .pipe(minifyHtml({
            empty: true,
            spare: true,
            quotes: true
        }))
        .pipe(ngHtml2Js({
            moduleName: "templates",
            prefix: "/"
        }))
        .pipe(concat("partials.js"))
        .pipe(gulp.dest("./dist/js"));
});

No comments:

Post a Comment

Parent-Child class declaration and initialization

using System; namespace CSharpDemo {     public class A     {         public void print()         {             Console.Wr...