From 9f2d58325988abc4bda87686a83cb8b506fa572a Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 25 May 2017 12:03:01 -0400 Subject: [PATCH] control jekyll with gulp --- README.md | 4 +--- gulpfile.js | 44 +++++++++++++++++++++++++++++++++++++++++++- package.json | 5 ++++- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c4840895..5e27eec8 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ The bitwarden help center project is written using Jekyll, which is hosted/deplo Run the following commands: - `npm install` -- `gulp build` -- `jekyll build` -- `jekyll serve` +- `gulp` You can now access the help center at `http://localhost:4009`. diff --git a/gulpfile.js b/gulpfile.js index 055e0b42..8a6cce94 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,7 +4,10 @@ var gulp = require('gulp'), rename = require('gulp-rename'), runSequence = require('run-sequence'), ghPages = require('gulp-gh-pages'), - merge = require('merge-stream'); + merge = require('merge-stream'), + gulpUtil = require('gulp-util'), + child = require('child_process'), + browserSync = require('browser-sync').create(); var paths = {}; paths.dist = './_site/'; @@ -72,4 +75,43 @@ gulp.task('lib', ['clean:lib'], function () { gulp.task('deploy', [], function () { return gulp.src(paths.dist + '**/*') .pipe(ghPages({ cacheDir: '../.publish_cache/help' })); +}); + +function jekyll(commands, cb) { + var jekyllLogger = (buffer) => { + buffer.toString() + .split(/\n/) + .forEach((message) => gulpUtil.log(message)); + }; + var jekyllCommand = process.platform === "win32" ? "jekyll.bat" : "jekyll"; + var jekyll = child.spawn(jekyllCommand, commands); + jekyll.stdout.on('data', jekyllLogger); + jekyll.stderr.on('data', jekyllLogger); + jekyll.stderr.on('close', cb); + return jekyll; +} + +gulp.task('jekyll:build', function (cb) { + return jekyll(['build', '--watch'], cb); +}); + +gulp.task('jekyll:serve', function (cb) { + return jekyll(['serve', '--watch'], cb); +}); + +gulp.task('serve', () => { + return browserSync.init({ + files: [paths.dist + '/**'], + port: 4009, + server: { + baseDir: paths.dist + } + }); +}); + +gulp.task('default', function (cb) { + return runSequence( + 'build', + 'jekyll:serve', + cb); }); \ No newline at end of file diff --git a/package.json b/package.json index efa5b8d7..e5a86bf1 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,9 @@ "font-awesome": "4.7.0", "jquery": "2.1.4", "lunr": "0.7.1", - "fluidbox": "2.0.0" + "fluidbox": "2.0.5", + "gulp-util": "3.0.8", + "child_process": "1.0.2", + "browser-sync": "2.18.12" } }