Merge branch 're-add-gulp' into source

This commit is contained in:
Oliver Davies 2017-08-03 01:23:38 +01:00
commit f7dee6b6f2
11 changed files with 1378 additions and 580 deletions

6
gulp-tasks/clean.js Normal file
View file

@ -0,0 +1,6 @@
var del = require('del');
module.exports = function (gulp, plugins, config) {
del.sync('source/assets/{css,fonts,js}');
del.sync('output_*/assets/{css,fonts,js}');
}

6
gulp-tasks/fonts.js Normal file
View file

@ -0,0 +1,6 @@
module.exports = function (gulp, plugins, config) {
return function () {
return gulp.src('node_modules/font-awesome/fonts/*')
.pipe(gulp.dest(config.fonts.outputDir));
}
}

11
gulp-tasks/scripts.js Normal file
View file

@ -0,0 +1,11 @@
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));
}
}

23
gulp-tasks/styles.js Normal file
View file

@ -0,0 +1,23 @@
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({
browsers: ["last 2 versions", "> 5%"],
cascade: false
}))
.pipe(plugins.concat(outputFile))
.pipe(plugins.if(config.production, plugins.purifycss([
'source/**/*.html',
'source/**/*.md',
'source/**/*.twig',
])))
.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));
}
}

8
gulp-tasks/watch.js Normal file
View file

@ -0,0 +1,8 @@
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']);
}
}

18
gulpfile.config.js Normal file
View file

@ -0,0 +1,18 @@
module.exports = function (plugins) {
return {
sass: {
sourceDir: "assets/sass",
pattern: "/**/*.sass",
outputDir: "source/assets/css"
},
fonts: {
outputDir: "source/assets/fonts"
},
js: {
sourceDir: "assets/js",
pattern: "/**/*.js",
outputDir: "source/assets/js"
},
production: !!plugins.util.env.production
}
}

37
gulpfile.js Normal file
View file

@ -0,0 +1,37 @@
'use strict';
var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();
var config = require('./gulpfile.config')(plugins);
function getTask(task) {
return require('./gulp-tasks/' + task)(gulp, plugins, config);
}
function addStyle(sourceFiles, outputFile) {
return require('./gulp-tasks/styles')(gulp, plugins, config, sourceFiles, outputFile);
}
function addScript(sourceFiles, outputFile) {
return require('./gulp-tasks/scripts')(gulp, plugins, config, sourceFiles, outputFile);
}
gulp.task('clean', getTask('clean'));
gulp.task('default', ['clean', 'fonts', 'styles', 'scripts']);
gulp.task('fonts', getTask('fonts'));
gulp.task('styles', addStyle([
'node_modules/font-awesome/css/font-awesome.css',
'node_modules/prismjs/themes/prism-twilight.css',
config.sass.sourceDir + '/main.sass'
], 'site.css'));
gulp.task('scripts', addScript([
'node_modules/jquery/dist/jquery.js',
'node_modules/bootstrap-sass/assets/javascripts/bootstrap.js',
'node_modules/prismjs/prism.js',
'node_modules/prismjs/components/prism-{apacheconf,bash,css,diff,ini,json,nginx,php,sass,scss,sql,less,twig,xml,yaml}.js',
config.js.sourceDir + config.js.pattern
], 'site.js'));
gulp.task('watch', ['default'], getTask('watch'));

View file

@ -1,51 +1,22 @@
{
"config": {
"cssOutputDir": "source/assets/css/",
"cssOutputFile": "main.css",
"fontsDir": "source/assets/fonts/",
"jsInputDir": "assets/js/",
"jsOutputDir": "source/assets/js/",
"jsOutputFile": "site.js",
"sassDir": "assets/sass/"
},
"scripts": {
"build": "npm run clean && npm-run-all -p sass js fonts:copy",
"clean": "npm-run-all -p sass:clean fonts:clean js:clean",
"dev": "npm run development",
"development": "cross-env ENV=dev npm run build",
"fonts:clean": "rm -rf $npm_package_config_fontsDir output_*/assets/fonts/",
"fonts:copy": "mkdir -p $npm_package_config_fontsDir && cp -R node_modules/font-awesome/fonts/* $npm_package_config_fontsDir",
"js": "npm run js:concat",
"js:clean": "rm -rf $npm_package_config_jsOutputDir output_*/assets/js/",
"js:concat": "mkdir -p $npm_package_config_jsOutputDir && concat node_modules/jquery/dist/jquery.js node_modules/bootstrap-sass/assets/javascripts/bootstrap.js node_modules/prismjs/prism.js node_modules/prismjs/components/prism-apacheconf.js node_modules/prismjs/components/prism-bash.js node_modules/prismjs/components/prism-css.js node_modules/prismjs/components/prism-diff.js node_modules/prismjs/components/prism-ini.js node_modules/prismjs/components/prism-json.js node_modules/prismjs/components/prism-json.js node_modules/prismjs/components/prism-less.js node_modules/prismjs/components/prism-nginx.js node_modules/prismjs/components/prism-php.js node_modules/prismjs/components/prism-sass.js node_modules/prismjs/components/prism-scss.js node_modules/prismjs/components/prism-sql.js node_modules/prismjs/components/prism-twig.js node_modules/prismjs/components/prism-yaml.js $npm_package_config_jsInputDir/**/*.js $npm_package_config_jsInputDir/main.js -o $npm_package_config_jsOutputDir$npm_package_config_jsOutputFile",
"js:watch": "onchange $npm_package_config_jsInputDir -v -- npm run js",
"prod": "npm run production",
"production": "cross-env ENV=prod npm run build",
"sass": "npm run sass:$ENV:compile && npm run sass:concat && npm run sass:$ENV:move",
"sass:clean": "rm -rf $npm_package_config_cssOutputDir output_*/assets/css/",
"sass:concat": "mkdir -p $npm_package_config_cssOutputDir && concat node_modules/font-awesome/css/font-awesome.css node_modules/prismjs/themes/prism-twilight.css $npm_package_config_cssOutputFile -o $npm_package_config_cssOutputFile",
"sass:dev:compile": "node-sass assets/sass/main.sass $npm_package_config_cssOutputFile --source-map true",
"sass:dev:move": "mv $npm_package_config_cssOutputFile $npm_package_config_cssOutputFile.map $npm_package_config_cssOutputDir",
"sass:prod:compile": "node-sass assets/sass/main.sass $npm_package_config_cssOutputFile",
"sass:prod:move": "mv $npm_package_config_cssOutputFile $npm_package_config_cssOutputDir && npm run sass:uglify",
"sass:uglify": "uglifycss --ugly-comments $npm_package_config_cssOutputDir/$npm_package_config_cssOutputFile --output $npm_package_config_cssOutputDir/$npm_package_config_cssOutputFile",
"sass:watch": "onchange $npm_package_config_sassDir -v -- npm run sass",
"watch": "npm run dev && cross-env ENV=dev npm-run-all -p sass:watch js:watch"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"concat": "^1.0.3",
"copy": "^0.3.0",
"cross-env": "^5.0.1",
"node-sass": "^4.5.3",
"npm-run-all": "^4.0.2",
"onchange": "^3.2.1",
"purify-css": "^1.2.5",
"uglifycss": "^0.0.27"
},
"dependencies": {
"bootstrap-sass": "^3.3.7",
"del": "^3.0.0",
"font-awesome": "^4.7.0",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^4.0.0",
"gulp-clean-css": "^3.7.0",
"gulp-concat": "^2.6.1",
"gulp-if": "^2.0.2",
"gulp-load-plugins": "^1.5.0",
"gulp-plumber": "^1.1.0",
"gulp-purifycss": "^0.2.0",
"gulp-refresh": "^1.1.0",
"gulp-sass": "^3.1.0",
"gulp-sass-glob": "^1.0.8",
"gulp-sourcemaps": "^2.6.0",
"gulp-uglify": "^3.0.0",
"gulp-util": "^3.0.8",
"jquery.2": "^1.0.0",
"prismjs": "^1.6.0"
}

View file

@ -16,7 +16,7 @@ popd
rm -rf ${BUILD_DIR}/**/* || exit 0
# Re-generate the site.
npm run prod
node_modules/.bin/gulp --production
vendor/bin/sculpin generate --no-interaction --clean --env=prod
touch output_prod/.nojekyll

View file

@ -13,7 +13,7 @@
{% include 'og' with { og: page.meta.og } %}
<link rel="stylesheet" href="{{ site.url }}/assets/css/main.css">
<link rel="stylesheet" href="{{ site.url }}/assets/css/site.css">
{% block stylesheets '' %}
{% for size in site.apple_touch_icon_sizes %}

1786
yarn.lock

File diff suppressed because it is too large Load diff