diff --git a/assets/sass/pages/_about.sass b/assets/sass/about.sass
similarity index 100%
rename from assets/sass/pages/_about.sass
rename to assets/sass/about.sass
diff --git a/assets/sass/pages/_blog.sass b/assets/sass/blog.sass
similarity index 74%
rename from assets/sass/pages/_blog.sass
rename to assets/sass/blog.sass
index 671624e2d..7ec9953b9 100644
--- a/assets/sass/pages/_blog.sass
+++ b/assets/sass/blog.sass
@@ -1,10 +1,8 @@
.page--blog__list
ul.posts
- //list-style: none
margin-bottom: 2em
margin-left: 0
margin-top: 0
- //padding-left: 0
.post
border-bottom: 1px solid #CCC
diff --git a/assets/sass/pages/_experience.sass b/assets/sass/experience.sass
similarity index 77%
rename from assets/sass/pages/_experience.sass
rename to assets/sass/experience.sass
index 9ee361fbf..a0146a417 100644
--- a/assets/sass/pages/_experience.sass
+++ b/assets/sass/experience.sass
@@ -1,8 +1,5 @@
-@import '../mixins'
-
-.experience-item
- // margin-bottom: $padding-large-vertical * 3
- +clearfix
+@import "node_modules/bulma/sass/utilities/initial-variables"
+@import "node_modules/bulma/sass/utilities/mixins"
.experience-item-website
margin-bottom: 2px
diff --git a/assets/sass/main.sass b/assets/sass/main.sass
index 13a83134e..6f65e373b 100644
--- a/assets/sass/main.sass
+++ b/assets/sass/main.sass
@@ -19,11 +19,3 @@ $primary: $blue
@import 'components/badges'
@import 'components/footer'
@import 'components/meetups'
-
-@import "pages/about"
-@import "pages/blog"
-@import "pages/experience"
-@import "pages/post"
-@import "pages/project"
-@import "pages/talk"
-@import "pages/testimonials"
diff --git a/assets/sass/pages/_post.sass b/assets/sass/post.sass
similarity index 100%
rename from assets/sass/pages/_post.sass
rename to assets/sass/post.sass
diff --git a/assets/sass/pages/_project.sass b/assets/sass/project.sass
similarity index 70%
rename from assets/sass/pages/_project.sass
rename to assets/sass/project.sass
index 4a92b125f..44b681143 100644
--- a/assets/sass/pages/_project.sass
+++ b/assets/sass/project.sass
@@ -1,4 +1,5 @@
-@import '../mixins'
+@import "node_modules/bulma/sass/utilities/initial-variables"
+@import "node_modules/bulma/sass/utilities/mixins"
.project-company
&.has-logo
diff --git a/assets/sass/pages/_talk.sass b/assets/sass/talk.sass
similarity index 62%
rename from assets/sass/pages/_talk.sass
rename to assets/sass/talk.sass
index 76aa2d22f..55af4694f 100644
--- a/assets/sass/pages/_talk.sass
+++ b/assets/sass/talk.sass
@@ -1,3 +1,6 @@
+@import "node_modules/bulma/sass/utilities/initial-variables"
+@import "node_modules/bulma/sass/utilities/mixins"
+
.talk-slides
background: url('../images/loading.gif') no-repeat center
min-height: 275px
diff --git a/assets/sass/pages/_testimonials.sass b/assets/sass/testimonials.sass
similarity index 100%
rename from assets/sass/pages/_testimonials.sass
rename to assets/sass/testimonials.sass
diff --git a/gulp-tasks/clean.js b/gulp-tasks/clean.js
deleted file mode 100644
index 305354f8f..000000000
--- a/gulp-tasks/clean.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var del = require('del');
-
-module.exports = function (gulp, plugins, config) {
- return function () {
- del.sync('source/assets/{css,fonts,js}');
- del.sync('output_*/assets/{css,fonts,js}');
- }
-}
diff --git a/gulp-tasks/fonts.js b/gulp-tasks/fonts.js
deleted file mode 100644
index 0c4f12a8b..000000000
--- a/gulp-tasks/fonts.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = function (gulp, plugins, config) {
- return function () {
- return gulp.src('node_modules/font-awesome/fonts/*')
- .pipe(gulp.dest(config.fonts.outputDir));
- }
-}
diff --git a/gulp-tasks/scripts.js b/gulp-tasks/scripts.js
deleted file mode 100644
index ac72da184..000000000
--- a/gulp-tasks/scripts.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = function (gulp, plugins, config, sourceFiles, outputFile) {
- return function () {
- return gulp.src(sourceFiles)
- .pipe(plugins.plumber())
- .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
- .pipe(plugins.concat(outputFile))
- .pipe(plugins.if(config.production, plugins.uglify()))
- .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.')))
- .pipe(gulp.dest(config.js.outputDir));
- }
-}
diff --git a/gulp-tasks/styles.js b/gulp-tasks/styles.js
deleted file mode 100644
index 66dae1c0a..000000000
--- a/gulp-tasks/styles.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = function (gulp, plugins, config, sourceFiles, outputFile) {
- return function () {
- return gulp.src(sourceFiles)
- .pipe(plugins.plumber())
- .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
- .pipe(plugins.sassGlob())
- .pipe(plugins.sass())
- .pipe(plugins.autoprefixer(config.sass.autoprefixer))
- .pipe(plugins.concat(outputFile))
- .pipe(plugins.if(config.production, plugins.purifycss(config.sass.purifyCss)))
- .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));
- }
-}
diff --git a/gulp-tasks/watch.js b/gulp-tasks/watch.js
deleted file mode 100644
index 16afc37b0..000000000
--- a/gulp-tasks/watch.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = function (gulp, plugins, config) {
- return function () {
- 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.js b/gulpfile.js
index 05d763f03..388a446dc 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -3,38 +3,86 @@
var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();
var config = require('./gulpfile.config')(plugins);
+var del = require('del');
-function getTask(task) {
- return require('./gulp-tasks/' + task)(gulp, plugins, config);
-}
+var app = {};
-function addStyle(sourceFiles, outputFile) {
- return require('./gulp-tasks/styles')(gulp, plugins, config, sourceFiles, outputFile);
-}
+app.copy = function (sourceFiles, destination) {
+ return gulp.src(sourceFiles)
+ .pipe(gulp.dest(destination));
+};
-function addScript(sourceFiles, outputFile) {
- return require('./gulp-tasks/scripts')(gulp, plugins, config, sourceFiles, outputFile);
-}
+app.sass = function (sourceFiles, outputFile) {
+ return gulp.src(sourceFiles)
+ .pipe(plugins.plumber())
+ .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
+ .pipe(plugins.sassGlob())
+ .pipe(plugins.sass())
+ .pipe(plugins.autoprefixer(config.sass.autoprefixer))
+ .pipe(plugins.concat(outputFile))
+ .pipe(plugins.if(config.production, plugins.purifycss(config.sass.purifyCss)))
+ .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 (sourceFiles, outputFile) {
+ return gulp.src(sourceFiles)
+ .pipe(plugins.plumber())
+ .pipe(plugins.if(!config.production, plugins.sourcemaps.init()))
+ .pipe(plugins.concat(outputFile))
+ .pipe(plugins.if(config.production, plugins.uglify()))
+ .pipe(plugins.if(!config.production, plugins.sourcemaps.write('.')))
+ .pipe(gulp.dest(config.js.outputDir));
+};
+
+gulp.task('clean', function () {
+ del.sync('source/assets/{css,fonts,js}');
+ del.sync('output_*/assets/{css,fonts,js}');
+});
-gulp.task('clean', getTask('clean'));
gulp.task('default', ['clean', 'fonts', 'styles', 'scripts']);
-gulp.task('fonts', getTask('fonts'));
-gulp.task('styles',
- addStyle([
+gulp.task('fonts', function () {
+ return app.copy('node_modules/font-awesome/fonts/*', config.fonts.outputDir);
+});
+
+gulp.task('styles', function () {
+ app.sass([
'node_modules/font-awesome/css/font-awesome.css',
- 'node_modules/prismjs/themes/prism-twilight.css',
config.sass.sourceDir + '/main.sass'
- ], 'site.css')
-);
+ ], 'main.css');
-gulp.task('scripts',
- addScript([
+ app.sass([
+ 'node_modules/prismjs/themes/prism-twilight.css',
+ config.sass.sourceDir + '/post.sass'
+ ], 'post.css')
+
+ app.sass(config.sass.sourceDir + '/about.sass', 'about.css');
+ app.sass(config.sass.sourceDir + '/blog.sass', 'blog.css');
+ app.sass(config.sass.sourceDir + '/experience.sass', 'experience.css');
+ app.sass(config.sass.sourceDir + '/project.sass', 'project.css');
+ app.sass(config.sass.sourceDir + '/talk.sass', 'talk.css');
+ app.sass(config.sass.sourceDir + '/testimonials.sass', 'testimonials.css');
+});
+
+gulp.task('scripts', function () {
+ app.js([
+ 'node_modules/jquery/dist/jquery.js',
+ config.js.sourceDir + '/**/*.js'
+ ], 'main.js')
+
+ app.js([
'node_modules/jquery/dist/jquery.js',
'node_modules/prismjs/prism.js',
'node_modules/prismjs/components/prism-{apacheconf,bsash,css,diff,ini,json,nginx,php,sass,scss,sql,less,twig,xml,yaml}.js',
- config.js.sourceDir + '/**/*.js'
- ], 'site.js')
-);
+ ], 'post.js')
+});
-gulp.task('watch', ['default'], getTask('watch'));
+gulp.task('watch', ['default'], function () {
+ plugins.refresh.listen();
+
+ gulp.watch(config.sass.sourceDir + config.sass.pattern, ['styles']);
+ gulp.watch(config.js.sourceDir + config.js.pattern, ['scripts']);
+});
diff --git a/source/_layouts/default.html.twig b/source/_layouts/default.html.twig
index ae49bd9b6..0adc3bbe9 100644
--- a/source/_layouts/default.html.twig
+++ b/source/_layouts/default.html.twig
@@ -13,7 +13,7 @@
{% include 'og' with { og: page.meta.og } %}
-
+
{% block stylesheets '' %}
{% for size in site.apple_touch_icon_sizes %}
@@ -60,7 +60,7 @@
-
+
{% if site.google_analytics_tracking_id %}
diff --git a/source/_layouts/post.html.twig b/source/_layouts/post.html.twig
index 4f5dd97df..08413d9de 100644
--- a/source/_layouts/post.html.twig
+++ b/source/_layouts/post.html.twig
@@ -10,3 +10,11 @@
{% include 'post/pager' %}
{% include 'post/about-author' %}
{% endblock %}
+
+{% block stylesheets %}
+
+{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
diff --git a/source/_layouts/project.html.twig b/source/_layouts/project.html.twig
index 87e6a1356..c7c424ff0 100644
--- a/source/_layouts/project.html.twig
+++ b/source/_layouts/project.html.twig
@@ -11,3 +11,7 @@
{% include 'project/skills' %}
{% include 'project/company' %}
{% endblock %}
+
+{% block stylesheets %}
+
+{% endblock %}
diff --git a/source/_layouts/talk.html.twig b/source/_layouts/talk.html.twig
index 951a9897c..72e7499e9 100644
--- a/source/_layouts/talk.html.twig
+++ b/source/_layouts/talk.html.twig
@@ -46,3 +46,7 @@
} %}
{% endblock %}
+
+{% block stylesheets %}
+
+{% endblock %}
diff --git a/source/blog.html b/source/blog.html
index 0d99a12fd..28a6a06b4 100644
--- a/source/blog.html
+++ b/source/blog.html
@@ -43,3 +43,7 @@ use: [posts]
{% endblock %}
{% block body_classes 'page--blog page--blog__list' %}
+
+{% block stylesheets %}
+
+{% endblock %}
diff --git a/source/experience.html.twig b/source/experience.html.twig
index 85782f613..2b9e2d197 100644
--- a/source/experience.html.twig
+++ b/source/experience.html.twig
@@ -47,3 +47,7 @@ redirect:
{% endfor %}
{% endblock %}
+
+{% block stylesheets %}
+
+{% endblock %}
diff --git a/source/index.md b/source/index.md
index a02481da2..ce97ae526 100644
--- a/source/index.md
+++ b/source/index.md
@@ -49,6 +49,11 @@ I’m a webmaster and documentation maintainer for [Drupal.org][42], and a provi
- IRC (freenode) - {{ site.irc.name }}
{% endblock %}
+{% block stylesheets %}
+
+{% endblock %}
+
+
[1]: https://www.google.com/#q=opdavies
[2]: https://www.drupal.org
[3]: http://symfony.com
diff --git a/source/testimonials.html.twig b/source/testimonials.html.twig
index 386fc0b0b..8c534b315 100644
--- a/source/testimonials.html.twig
+++ b/source/testimonials.html.twig
@@ -30,3 +30,7 @@ use: [posts]
{% endblock %}
{% block body_classes 'page--testimonials' %}
+
+{% block stylesheets %}
+
+{% endblock %}