You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.2 KiB
104 lines
3.2 KiB
// Assigning modules to local variables |
|
var gulp = require('gulp'); |
|
var less = require('gulp-less'); |
|
var browserSync = require('browser-sync').create(); |
|
var header = require('gulp-header'); |
|
var cleanCSS = require('gulp-clean-css'); |
|
var rename = require("gulp-rename"); |
|
var uglify = require('gulp-uglify'); |
|
var pkg = require('./package.json'); |
|
|
|
// Set the banner content |
|
var banner = ['/*!\n', |
|
' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n', |
|
' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n', |
|
' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n', |
|
' */\n', |
|
'' |
|
].join(''); |
|
|
|
// Default task |
|
gulp.task('default', function() { |
|
// default tasks here |
|
}); |
|
|
|
// Less task to compile the less files and add the banner |
|
gulp.task('less', function() { |
|
return gulp.src('less/agency.less') |
|
.pipe(less()) |
|
.pipe(header(banner, { pkg: pkg })) |
|
.pipe(gulp.dest('css')) |
|
.pipe(browserSync.reload({ |
|
stream: true |
|
})) |
|
}); |
|
|
|
// Minify CSS |
|
gulp.task('minify-css', function() { |
|
return gulp.src('css/agency.css') |
|
.pipe(cleanCSS({ compatibility: 'ie8' })) |
|
.pipe(rename({ suffix: '.min' })) |
|
.pipe(gulp.dest('css')) |
|
.pipe(browserSync.reload({ |
|
stream: true |
|
})) |
|
}); |
|
|
|
// Minify JS |
|
gulp.task('minify-js', function() { |
|
return gulp.src('js/agency.js') |
|
.pipe(uglify()) |
|
.pipe(header(banner, { pkg: pkg })) |
|
.pipe(rename({ suffix: '.min' })) |
|
.pipe(gulp.dest('js')) |
|
.pipe(browserSync.reload({ |
|
stream: true |
|
})) |
|
}); |
|
|
|
// Copy Bootstrap core files from node_modules |
|
gulp.task('bootstrap', function() { |
|
return gulp.src(['node_modules/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map']) |
|
.pipe(gulp.dest('')) |
|
}) |
|
|
|
// Copy jQuery core files from node_modules |
|
gulp.task('jquery', function() { |
|
return gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js']) |
|
.pipe(gulp.dest('js')) |
|
}) |
|
|
|
// Copy Font Awesome core files from node_modules |
|
gulp.task('fontawesome', function() { |
|
return gulp.src([ |
|
'node_modules/font-awesome/**', |
|
'!node_modules/font-awesome/**/*.map', |
|
'!node_modules/font-awesome/.npmignore', |
|
'!node_modules/font-awesome/*.txt', |
|
'!node_modules/font-awesome/*.md', |
|
'!node_modules/font-awesome/*.json' |
|
]) |
|
.pipe(gulp.dest('font-awesome')) |
|
}) |
|
|
|
// Copy all dependencies from node_modules |
|
gulp.task('copy', ['bootstrap', 'jquery', 'fontawesome']); |
|
|
|
// Configure the browserSync task |
|
gulp.task('browserSync', function() { |
|
browserSync.init({ |
|
server: { |
|
baseDir: '' |
|
}, |
|
}) |
|
}) |
|
|
|
// Watch Task that compiles LESS and watches for HTML or JS changes and reloads with browserSync |
|
gulp.task('dev', ['browserSync', 'less', 'minify-css', 'minify-js'], function() { |
|
gulp.watch('less/*.less', ['less']); |
|
gulp.watch('css/*.css', ['minify-css']); |
|
gulp.watch('js/*.js', ['minify-js']); |
|
// Reloads the browser whenever HTML or JS files change |
|
gulp.watch('*.html', browserSync.reload); |
|
gulp.watch('js/**/*.js', browserSync.reload); |
|
});
|
|
|