使用`jekyll serve`

时间:2016-04-08 03:29:27

标签: ruby jekyll jekyll-extensions

我正在开发一个Jekyll插件。当我运行jekyll serve命令时,当我按预期更改任何markdown,html或插件文件时,会重新生成站点文件。我发现的问题是,当重新生成markdown / HTML文件时,插件本身不会重新加载。我必须终止jekyll serve并再次发出命令以使插件更改生效。有没有办法让插件在更改后自动重新加载?

这是针对Jekyll 3.1.2。

1 个答案:

答案 0 :(得分:0)

根据@DavidJacquel的建议和我发现的here的要点,我使用了Gulp和这个gulpfile

'use strict';

var gulp = require('gulp'),
    express = require('express'),
    spawn = require('child_process').spawn;

var jekyll_file = process.platform === 'win32' ? 'jekyll.bat' : 'jekyll';

gulp.task('jekyll', () => {
  var jekyll = spawn(jekyll_file, ['build', '--incremental']);

  var output = '';
  jekyll.stdout.on('data', (t) => { output += t; });
  jekyll.stderr.on('data', (t) => { output += t; });

  jekyll.on('exit', (code) => {
    if (code)
      console.log(`Jekyll exited with code: ${code}\n${output}`);
    else
      console.log("Finished Jekyll build");
  });
});


gulp.task('serve', () => {
  var server = express();
  server.use(express.static('_site/'));
  server.listen(4000);
});

gulp.task('watch', () => {
  gulp.watch(['**/*.html', '**/*.md', '_plugins/*.rb', '!_site/**/*'], ['jekyll']);
});

gulp.task('default', ['jekyll', 'serve', 'watch']);

获得理想的效果。还创建了问题here