Refactor Gulp

This commit is contained in:
Oliver Davies 2016-08-22 19:02:02 +01:00
parent 4d89482614
commit c2bc878b26
13 changed files with 104 additions and 100 deletions

View file

@ -1,3 +1,3 @@
{
"directory": "vendor/bower"
"directory": "vendor/bower_components"
}

View file

@ -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

View file

@ -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",

View file

@ -1 +0,0 @@
gulp.task 'build', ['clean', 'styles', 'scripts', 'fonts']

View file

@ -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}'

View file

@ -1 +0,0 @@
gulp.task 'default', ['build', 'watch']

View file

@ -1,2 +0,0 @@
gulp.task 'fonts', ->
app.copy [config.bowerDir + '/font-awesome/fonts/*'], config.fonts.outputDir

View file

@ -1,4 +0,0 @@
gulp.task 'minify-prod-html', ->
gulp.src 'output_prod/**/*.html'
.pipe plugins.htmlmin config.htmlmin
.pipe gulp.dest 'output_prod'

View file

@ -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'

View file

@ -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'

View file

@ -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']

View file

@ -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')

101
gulpfile.js Normal file
View file

@ -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'));
});