Tag: jekyll

使用child_process从io.js运行/安装ruby gem

目的:用Electron(Atom Shell)创build一个桌面应用程序(GUI),它从io.js运行一个gem的命令。 1.问题是我想知道哪个是处理调用系统中gem命令的最好方法。 2.如果系统内没有安装gem,桌面应用程序将毫无价值。 哪个是处理这种依赖的最好方法? 示例代码,我已经排出 var spawn = require("child_process").spawn; var jk = spawn('jekyll', ['serve']); jk.stdout.on('data', function(data){ console.log(data.toString('utf8')); // WRITE IN THE CONSOLE GEM OUTPUT }); 该代码是执行命令的好方法吗? 我的理想场景是“作为用户我要按下一个编译站点的button” – >单击然后运行将由该代码处理的gem的构build命令。

杰基尔给我错误,当我尝试运行它吞咽

我在Windows 10电脑上,我试图让Jekyll和Gulp一起运行,但是当我运行我的默认任务时,我在控制台中输出如下内容: $ gulp [18:08:08] Using gulpfile ~\Desktop\personal-website\gulpfile.js [18:08:08] Starting 'sass'… [18:08:08] Starting 'scripts'… [18:08:08] Starting 'images'… [18:08:08] Starting 'jade'… [18:08:08] Starting 'jekyll-build'… [18:08:08] Starting 'watch'… [18:08:08] Finished 'watch' after 27 ms [18:08:08] Finished 'scripts' after 122 ms [18:08:08] Finished 'images' after 110 ms [18:08:08] Finished 'jade' after 107 ms [18:08:08] Finished 'sass' after 236 […]

通过child_process.exec命令执行gulp.js任务完成

我有一个与Browsersync运行的Jekyll项目,但我遇到了一个小问题,让我的吞咽任务按预期/期望运行。 这是我的gulpfile的简化版本: const gulp = require('gulp'); const browserSync = require('browser-sync').create(); gulp.task('jekyll', () => { return require('child_process').exec('bundle exec jekyll serve'); }); gulp.task('serve', ['jekyll'], () => { browserSync.init({ proxy: 'localhost: 4000' }); gulp.watch('_site/**/*.html').on('change', browserSync.reload); }); gulp.task('default', ['serve']); 什么是期望的/期望的 : jekyll任务运行并执行命令,这导致主动运行的服务器。 然后serve任务运行,这将打开一个新的标签指向已经运行的jekyll服务器。 一切都是正确的世界。 实际发生的事情 :运行jekyll任务并执行命令。 serve任务在jekyll任务运行后立即运行,并打开一个新的浏览器选项卡。 该标签将永远旋转,因为在打开时,服务器(通过jekyll)还没有运行。 几秒钟后,手动刷新将使事情按预期工作,因为那时服务器正在运行。 我的主要问题是 :如何才能防止jekyll任务被“完成”,直到bundle exec jekyll serve命令实际上完成与服务器运行? 第一次手动刷新页面是非常麻烦的,但这是一个学习新东西的机会。

在产生subprocess时pipe理Gulp依赖关系

我有一个产生一个jekyll孩子过程的吞咽任务。 它将我的标记编译到_site中的html文件中。 我有另一个任务,这个任务作为一个依赖,因为它执行生成的HTML的一些后处理。 然而,它触发得太早 – 因为看起来subprocess并不影响依赖pipe理 我如何确保html始终在jekyll之后运行 – 最好不要使用: jekyll.on('exit', function (code, signal) { gulp.run('html'); }); 任务: gulp.task('jekyll', ['scripts', 'styles'], function () { var spawn = require('child_process').spawn; var jekyll = spawn('jekyll', ['build', '–config', 'app/markdown/_config.yml', '–trace'], {stdio: 'inherit'}); }); gulp.task('html', ['jekyll'] function () { return gulp.src('_site/*.html') .pipe($.useref.assets()) });

jekyll服务(本地)没有build筑物

Jekyll在给定的目录中生成一个静态的站点(默认情况下, _site )。 运行jekyll servebuild立网站,然后build立一个服务器,使得该网站可以在指定的端口上被本地查看(例如localhost:4000默认)。 我想知道是否有一种方法来激活这个serve行为,而不触发gem重新编译网站。 或者,使用其他工具从本地端口服务于站点而不使用jekyll就足够了,但是我不知道如何做(node.js?)。 虽然我可以直接在浏览器中打开静态文件,但是没有正确地find所有相关的url链接(对于css等),默认将/css/default.css这样的链接/css/default.css根file://css/default.css而这当然不存在。 (例如,这很有用,因为Jekyll需要一段时间才能build立一个大型的网站,而且我使用的某些插件需要互联网访问各种API,如果离线查看网站而不触发这些网站,那就太好了。

在Gulp / Node中运行jekyll作为一个subprocess

我正在尝试使用Gulp.js构build一个jekyll站点。 我读过,我不应该在这个问题上使用插件。 我一直在调查build议使用subprocess,但我不断收到错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34) 这是我的大文件: var gulp = require('gulp'); var spawn = require('child_process').spawn; var gutil = require('gulp-util'); gulp.task('jekyll', function (){ spawn('jekyll', ['build'], {stdio: 'inherit'}); }); gulp.task('default', ['jekyll']); 我究竟做错了什么? 我在节点0.10.25,赢7。 编辑我以前有一个谷歌ENOENT错误。 已经检查了我的path和Ruby在那里,我可以从命令行运行jekyll。 仍然没有喜乐。