Refactor Gulp
This commit is contained in:
parent
4d89482614
commit
c2bc878b26
2
.bowerrc
2
.bowerrc
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"directory": "vendor/bower"
|
||||
"directory": "vendor/bower_components"
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
14
bower.json
14
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",
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
gulp.task 'build', ['clean', 'styles', 'scripts', 'fonts']
|
|
@ -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}'
|
|
@ -1 +0,0 @@
|
|||
gulp.task 'default', ['build', 'watch']
|
|
@ -1,2 +0,0 @@
|
|||
gulp.task 'fonts', ->
|
||||
app.copy [config.bowerDir + '/font-awesome/fonts/*'], config.fonts.outputDir
|
|
@ -1,4 +0,0 @@
|
|||
gulp.task 'minify-prod-html', ->
|
||||
gulp.src 'output_prod/**/*.html'
|
||||
.pipe plugins.htmlmin config.htmlmin
|
||||
.pipe gulp.dest 'output_prod'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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']
|
|
@ -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
101
gulpfile.js
Normal 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'));
|
||||
});
|
Reference in a new issue