Перезагрузите плагин при использовании `jekyll serve`

Я разрабатываю плагин Jekyll. Когда я запускаю команду jekyll serve, файлы сайта восстанавливаются при изменении любых файлов уценки, html или плагинов, как и ожидалось. Проблема, которую я обнаружил, заключается в том, что, хотя файлы уценки/HTML регенерируются, сами плагины не перезагружаются. Я должен завершить jekyll serve и снова выполнить команду, чтобы изменения плагина вступили в силу. Есть ли способ сделать так, чтобы плагины автоматически перезагружались при изменении?

Это для Джекила 3.1.2.


person Chris Hunt    schedule 08.04.2016    source источник
comment
Вы можете поискать Gulp serve и посмотреть, это поможет.   -  person David Jacquel    schedule 09.04.2016
comment
Попробуйте jekyll serve --watch   -  person Virtua Creative    schedule 09.04.2016
comment
@DavidJacquel спасибо, думаю, я пойду по этому пути и опубликую свой сценарий, как только он будет готов.   -  person Chris Hunt    schedule 09.04.2016
comment
@VirtuaCreative, спасибо. Я не знаю, в какой версии это было изменено, но jekyll serve включает автовосстановление по умолчанию. Моя проблема в том, что он не перезагружает плагины.   -  person Chris Hunt    schedule 09.04.2016
comment
Хм... понял. Я этого не знал. Пробовали ли вы использовать Prepos? Я не уверен, что это сработает, но ты можешь попробовать...   -  person Virtua Creative    schedule 09.04.2016
comment
Нет, я не думаю, что это сработает. В корне исходного кода вашего сайта создайте каталог _plugins. Разместите здесь свои плагины. Любой файл, оканчивающийся на *.rb внутри этого каталога, будет загружен до того, как Jekyll сгенерирует ваш сайт. Источник. Плагин будет загружен до того, как Jekyll сгенерирует сайт.   -  person Virtua Creative    schedule 09.04.2016


Ответы (1)


Основываясь на предложении @DavidJacquel и сути, которую я нашел здесь, я использовал 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']);

чтобы получить желаемый эффект. Также создал задачу здесь.

person Chris Hunt    schedule 09.04.2016