From c2bc878b260020bfa64040ab75554ef161fac34e Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 22 Aug 2016 19:02:02 +0100 Subject: [PATCH] Refactor Gulp --- .bowerrc | 2 +- .editorconfig | 2 +- bower.json | 14 +---- gulp/build.coffee | 1 - gulp/clean.coffee | 7 --- gulp/default.coffee | 1 - gulp/fonts.coffee | 2 - gulp/minify-prod-html.coffee | 4 -- gulp/scripts.coffee | 6 --- gulp/styles.coffee | 5 -- gulp/watch.coffee | 5 -- gulpfile.coffee | 54 ------------------- gulpfile.js | 101 +++++++++++++++++++++++++++++++++++ 13 files changed, 104 insertions(+), 100 deletions(-) delete mode 100644 gulp/build.coffee delete mode 100644 gulp/clean.coffee delete mode 100644 gulp/default.coffee delete mode 100644 gulp/fonts.coffee delete mode 100644 gulp/minify-prod-html.coffee delete mode 100644 gulp/scripts.coffee delete mode 100644 gulp/styles.coffee delete mode 100644 gulp/watch.coffee delete mode 100644 gulpfile.coffee create mode 100644 gulpfile.js diff --git a/.bowerrc b/.bowerrc index 1d7e2237..1885a4ea 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,3 +1,3 @@ { - "directory": "vendor/bower" + "directory": "vendor/bower_components" } diff --git a/.editorconfig b/.editorconfig index 748753e3..19ea6d0c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,7 +4,7 @@ root = true end_of_line = lf insert_final_newline = true -[{*.html,*.twig,*.coffee,*.php,*.feature,*.yml,*.sass}] +[{*.html,*.twig,*.coffee,*.php,*.feature,*.yml,*.sass,*.js}] indent_style = space indent_size = 4 diff --git a/bower.json b/bower.json index bc1f88bd..b24589ee 100644 --- a/bower.json +++ b/bower.json @@ -1,18 +1,6 @@ { "name": "oliverdavies.uk", - "description": "", - "main": "", - "license": "MIT", - "moduleType": [], - "homepage": "https://www.oliverdavies.uk", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { + "devDependencies": { "bootstrap-sass": "~3.3.6", "font-awesome": "fontawesome#~4.5.0", "compass-breakpoint": "breakpoint-sass#~2.6.1", diff --git a/gulp/build.coffee b/gulp/build.coffee deleted file mode 100644 index ea5f1e58..00000000 --- a/gulp/build.coffee +++ /dev/null @@ -1 +0,0 @@ -gulp.task 'build', ['clean', 'styles', 'scripts', 'fonts'] diff --git a/gulp/clean.coffee b/gulp/clean.coffee deleted file mode 100644 index ced17c48..00000000 --- a/gulp/clean.coffee +++ /dev/null @@ -1,7 +0,0 @@ -del = require 'del' - -gulp.task 'clean', -> - del.sync config.fonts.outputDir - del.sync config.js.outputDir - del.sync config.sass.outputDir - del.sync 'output_*/assets/{css,fonts,js}' diff --git a/gulp/default.coffee b/gulp/default.coffee deleted file mode 100644 index 8279d877..00000000 --- a/gulp/default.coffee +++ /dev/null @@ -1 +0,0 @@ -gulp.task 'default', ['build', 'watch'] diff --git a/gulp/fonts.coffee b/gulp/fonts.coffee deleted file mode 100644 index 323b95b1..00000000 --- a/gulp/fonts.coffee +++ /dev/null @@ -1,2 +0,0 @@ -gulp.task 'fonts', -> - app.copy [config.bowerDir + '/font-awesome/fonts/*'], config.fonts.outputDir diff --git a/gulp/minify-prod-html.coffee b/gulp/minify-prod-html.coffee deleted file mode 100644 index 5e3b3631..00000000 --- a/gulp/minify-prod-html.coffee +++ /dev/null @@ -1,4 +0,0 @@ -gulp.task 'minify-prod-html', -> - gulp.src 'output_prod/**/*.html' - .pipe plugins.htmlmin config.htmlmin - .pipe gulp.dest 'output_prod' diff --git a/gulp/scripts.coffee b/gulp/scripts.coffee deleted file mode 100644 index c0286b8a..00000000 --- a/gulp/scripts.coffee +++ /dev/null @@ -1,6 +0,0 @@ -gulp.task 'scripts', -> - app.js [ - config.bowerDir + '/jquery2/jquery.js', - config.bowerDir + '/bootstrap-sass/assets/javascripts/bootstrap.js', - config.js.sourceDir + config.js.pattern - ], 'site.js' diff --git a/gulp/styles.coffee b/gulp/styles.coffee deleted file mode 100644 index f1386258..00000000 --- a/gulp/styles.coffee +++ /dev/null @@ -1,5 +0,0 @@ -gulp.task 'styles', -> - app.sass [ - config.bowerDir + '/font-awesome/css/font-awesome.css', - config.sass.sourceDir + config.sass.pattern - ], 'site.css' diff --git a/gulp/watch.coffee b/gulp/watch.coffee deleted file mode 100644 index 4bebfe77..00000000 --- a/gulp/watch.coffee +++ /dev/null @@ -1,5 +0,0 @@ -gulp.task 'watch', -> - plugins.refresh.listen() - - gulp.watch config.sass.sourceDir + config.sass.pattern, ['styles'] - gulp.watch config.js.sourceDir + config.js.pattern, ['scripts'] diff --git a/gulpfile.coffee b/gulpfile.coffee deleted file mode 100644 index bd826246..00000000 --- a/gulpfile.coffee +++ /dev/null @@ -1,54 +0,0 @@ -'use strict' - -global.gulp = require 'gulp' -global.plugins = require('gulp-load-plugins')() - -global.config = - autoprefixer: - browsers: 'last 2 versions' - bowerDir: 'vendor/bower' - fonts: - outputDir: 'source/assets/fonts' - htmlmin: - collapseWhitespace: true - js: - sourceDir: 'assets/js' - pattern: '/**/*.js' - outputDir: 'source/assets/js' - production: plugins.util.env.production || false - sass: - sourceDir: 'assets/sass' - pattern: '/**/*.sass' - outputDir: 'source/assets/css' - scss: - pattern: '/**/*.scss' - -global.app = {} - -app.sass = (paths, filename) -> - gulp.src paths - .pipe plugins.plumber() - .pipe plugins.if !config.production, plugins.sourcemaps.init() - .pipe plugins.sassGlob() - .pipe plugins.sass() - .pipe plugins.autoprefixer config.autoprefixer - .pipe plugins.concat filename - .pipe plugins.if config.production, plugins.cleanCss() - .pipe plugins.if !config.production, plugins.sourcemaps.write('.') - .pipe plugins.if !config.production, plugins.refresh() - .pipe gulp.dest config.sass.outputDir - -app.js = (paths, filename) -> - gulp.src paths - .pipe plugins.plumber() - .pipe plugins.if !config.production, plugins.sourcemaps.init() - .pipe plugins.concat filename - .pipe plugins.if config.production, plugins.uglify() - .pipe plugins.if !config.production, plugins.sourcemaps.write('.') - .pipe gulp.dest config.js.outputDir - -app.copy = (source, destination) -> - gulp.src source - .pipe gulp.dest destination - -require('require-dir')('./gulp') diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..3250332a --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,101 @@ +'use strict'; + +var gulp = require('gulp'); +var plugins = require('gulp-load-plugins')(); +var del = require('del'); + +var config = { + "bowerDir": "vendor/bower_components", + "fontsDir": "source/assets/fonts", + "js": { + "sourceDir": "assets/js", + "outputDir": "source/assets/js", + "pattern": "/**/*.js" + }, + "production": !!plugins.util.env.production, + "sass": { + "sourceDir": "assets/sass", + "pattern": "/**/*.sass", + "outputDir": "source/assets/css" + } +}; + +var app = {}; + +app.sass = function(paths, filename) { + return gulp.src(paths) + .pipe(plugins.plumber()) + .pipe(plugins.if(!config.production, plugins.sourcemaps.init())) + .pipe(plugins.sassGlob()) + .pipe(plugins.sass()) + .pipe(plugins.autoprefixer("last 2 versions")) + .pipe(plugins.concat(filename)) + .pipe(plugins.if(config.production, plugins.cleanCss())) + .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.'))) + .pipe(plugins.if(!config.production, plugins.refresh())) + .pipe(gulp.dest(config.sass.outputDir)); +} + +app.js = function(paths, filename) { + return gulp.src(paths) + .pipe(plugins.plumber()) + .pipe(plugins.if(!config.production, plugins.sourcemaps.init())) + .pipe(plugins.concat(filename)) + .pipe(plugins.if(config.production, plugins.uglify())) + .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.'))) + .pipe(gulp.dest(config.js.outputDir)); +} + +app.copy = function(source, destination) { + return gulp.src(source) + .pipe(gulp.dest(destination)); +} + +gulp.task('clean', function() { + del.sync(config.fontsDir); + del.sync(config.js.outputDir); + del.sync(config.sass.outputDir); + del.sync('output_*/assets/css'); + del.sync('output_*/assets/fonts'); + del.sync('output_*/assets/js'); +}); + +gulp.task('fonts', function() { + return app.copy([ + config.bowerDir + "/font-awesome/fonts/*" + ], config.fontsDir); +}); + +gulp.task('styles', function() { + return app.sass([ + config.bowerDir + '/font-awesome/css/font-awesome.css', + config.sass.sourceDir + config.sass.pattern + ], 'site.css'); +}); + +gulp.task('scripts', function() { + return app.js([ + config.bowerDir + '/jquery2/jquery.js', + config.bowerDir + '/bootstrap-sass/assets/javascripts/bootstrap.js', + config.js.sourceDir + config.js.pattern + ], 'site.js'); +}); + +gulp.task('watch', function() { + plugins.refresh.listen(); + + gulp.watch(config.sass.sourceDir + config.sass.pattern, ['styles']); + gulp.watch(config.js.sourceDir + config.js.pattern, ['scripts']); +}) + +gulp.task('build', ['clean', 'fonts', 'styles', 'scripts']); + +gulp.task('default', ['build', 'watch']); + +gulp.task('minify-prod-html', function() { + return gulp.src('output_prod/**/*.html') + .pipe(plugins.htmlmin({ + collapseWhitespace: true + })) + .pipe(gulp.dest('output_prod')); +});