それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

gitbookのビルドだけをgulpでフォルダ監視して自動実行したい

gitbook-cli でサーバーがいちいち上がるのがめんどくさい。

gitbook を使い込む気は、あまりないのだけど、マークダウンを記述して、gitbook serve で 変換が必要

gulp で監視してしまいたい。

HTMLに変換するだけなら、べつにserve は要らないし、そこまでリアルタイムな編集も要らないんだよね。

gitbook watch がほしいとおもったけど見つからないので、 しかし、gitbook-cli は開発終わってる。

仕方ないので、gitbook watch 代わりにgulp watch を作ってみた。

gitbook はWEBサービスになっちゃったんだけど、なんか残念だよね。

gitbook-cli のビルド部分だけを gulp 化したもの

var gulp = require("gulp");


gulp.task('watch', function(done){

  gulp.watch(['**/*.md'], gulp.task('book'));

});


gulp.task('book', function( done ){
  // ./node_modules/.bin/gitbook から抜粋
  var parsedArgv = require('optimist').argv;
  var color = require('bash-color');
  var manager = require('./node_modules/gitbook-cli/lib');
  var commands = require('./node_modules/gitbook-cli/lib/commands');
  var program = require('commander');
  var bookRoot = parsedArgv._[1] || process.cwd();

  function runPromise(p) {
    return p
      .then(function() {
        process.exit(0);
      }, function(err) {
        console.log('');
        console.log(color.red(err.toString()));
        if (program.debug || process.env.DEBUG) console.log(err.stack || '');
        process.exit(1);
      });
  }
  return manager.ensureAndLoad(bookRoot,program.gitbook)
    .then(function ( gitbook ) {
      return commands.exec(gitbook.commands, 'build', [], [])
    });
});