2016-04-08 11 views
0

Ich entwickle ein Jekyll Plugin. Wenn ich den Befehl jekyll serve ausführe, werden Site-Dateien neu generiert, wenn ich irgendwelche Markdown-, HTML- oder Plugin-Dateien wie erwartet ändere. Das Problem, das ich gefunden habe, ist, dass, während Markdown/HTML-Dateien neu generiert werden, die Plugins selbst nicht neu geladen werden. Ich muss jekyll serve beenden und den Befehl erneut ausgeben, damit die Plugin-Änderungen wirksam werden. Gibt es eine Möglichkeit, es so zu machen, dass die Plugins automatisch neu geladen werden, wenn sie geändert werden?Plugin neu laden wenn `jekyll serve` verwendet wird

Dies ist für Jekyll 3.1.2.

+0

Sie können nach Gulp dienen und beobachten, es wird den Trick tun. –

+0

Versuchen Sie 'jekyll serve --watch' –

+0

@DavidJacquel danke, ich denke, ich werde diese Route gehen und mein Skript veröffentlichen, sobald es fertig ist. –

Antwort

0

Basierend auf den Vorschlag von @DavidJacquel und der Kern I here gefunden, habe ich Gulp mit diesem 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']); 

den gewünschten Effekt zu erzielen. Auch erstellt Problem here.

Verwandte Themen