使用 `jekyll serve` 时重新加载插件
Reload plugin when using `jekyll serve`
我正在开发一个 Jekyll 插件。当我 运行 jekyll serve
命令时,站点文件会在我更改任何降价、html 或插件文件时重新生成,如预期的那样。我发现的问题是,虽然 markdown/HTML 文件被重新生成,但插件本身并没有重新加载。我必须终止 jekyll serve
并再次发出命令以使插件更改生效。有没有办法让插件在更改时自动重新加载?
这是 Jekyll 3.1.2 的。
根据@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.
我正在开发一个 Jekyll 插件。当我 运行 jekyll serve
命令时,站点文件会在我更改任何降价、html 或插件文件时重新生成,如预期的那样。我发现的问题是,虽然 markdown/HTML 文件被重新生成,但插件本身并没有重新加载。我必须终止 jekyll serve
并再次发出命令以使插件更改生效。有没有办法让插件在更改时自动重新加载?
这是 Jekyll 3.1.2 的。
根据@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.