summaryrefslogtreecommitdiff
path: root/gulpfile.js
diff options
context:
space:
mode:
authorThomas <tgrif81@tscstudents.net>2017-03-20 18:10:50 +0000
committerThomas <tgrif81@tscstudents.net>2017-03-20 18:10:50 +0000
commit7f8bdc7ee0ac349a62563954fa6b2bd915e72949 (patch)
tree648fd8573eba8cc451ce229ca8002c3cf323a361 /gulpfile.js
parente7ce1aa5593b617d2884c6368aa499c0f4adda3e (diff)
Upload new file
Diffstat (limited to 'gulpfile.js')
-rw-r--r--gulpfile.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/gulpfile.js b/gulpfile.js
new file mode 100644
index 0000000..56dd664
--- /dev/null
+++ b/gulpfile.js
@@ -0,0 +1,92 @@
+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('');
+
+// Compile LESS files from /less into /css
+gulp.task('less', function() {
+ return gulp.src('less/clean-blog.less')
+ .pipe(less())
+ .pipe(header(banner, { pkg: pkg }))
+ .pipe(gulp.dest('css'))
+ .pipe(browserSync.reload({
+ stream: true
+ }))
+});
+
+// Minify compiled CSS
+gulp.task('minify-css', ['less'], function() {
+ return gulp.src('css/clean-blog.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/clean-blog.js')
+ .pipe(uglify())
+ .pipe(header(banner, { pkg: pkg }))
+ .pipe(rename({ suffix: '.min' }))
+ .pipe(gulp.dest('js'))
+ .pipe(browserSync.reload({
+ stream: true
+ }))
+});
+
+// Copy vendor libraries from /node_modules into /vendor
+gulp.task('copy', function() {
+ gulp.src(['node_modules/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map'])
+ .pipe(gulp.dest('vendor/bootstrap'))
+
+ gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js'])
+ .pipe(gulp.dest('vendor/jquery'))
+
+ 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('vendor/font-awesome'))
+})
+
+// Run everything
+gulp.task('default', ['less', 'minify-css', 'minify-js', 'copy']);
+
+// Configure the browserSync task
+gulp.task('browserSync', function() {
+ browserSync.init({
+ server: {
+ baseDir: ''
+ },
+ })
+})
+
+// Dev task 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);
+});