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