gruntjs - Grunt,使用 Jekyll Serve 进行实时重新加载

标签 gruntjs jekyll livereload

我熟悉带有监视任务的连接服务器方法,该任务发出 Jekyll 构建信号。这很好,但我更喜欢内置的 Jekyll Serve,它具有快速再生功能,而不是构建。

是否可以在 Grunt 中将 Jekyll Serve 与 Live Reload 结合使用?本质上,每次您进行更改时,Jekyll Serve 都会说“正在重新生成”,您无需刷新即可在浏览器中看到更改。

也很高兴使用 Chrome Live Reload 扩展程序。

注意:我知道这可以使用 Guard 来实现,但我希望有一个完整的 Grunt 解决方案。

谢谢!

最佳答案

这是我如何让它发挥作用的:

问题是 jekyllservegrunt watch 都需要并行运行。我所做的是创建两个 grunt 任务并在两个单独的终端窗口中运行它们。 我有以下设置:

  • 一个 _src 目录,我在其中编辑原始源文件
  • 一个 asset 目录,其中包含图像等
  • 一个由 grunt 填充的 build 目录,并且在其中运行 jekyll

首先,我运行 grunt dev 任务。该任务首先删除构建目录,然后复制必要的源文件,最后将 cds 到我的构建目录中并调用 jekyll:

cd build && jekyll serve --livereload

此任务配置如下:

grunt.registerTask(
  'assembledev',
  [
    'copy:src',
    'copy:assets'
  ]
);
grunt.registerTask(
  'dev',
  [
    'clean',
    'assembledev',
    'exec:serve'
  ]
);

然后,在一个单独的终端中,我运行 grunt watch。 watch 配置如下:

watch {
  src: {
    files: ['{_src,assets}/**/*.{js,css,html,php}'],
    tasks: ['assembledev']
  }
}

现在,每当我更改源文件时,更新的文件都会被复制到构建目录,然后被 jekyll 识别为已更改的文件。

这两个终端窗口感觉有点像黑客,但这样我就可以看到 grunt watchjekyllserve 的输出。另外,我可以使用 Ctrl+c 轻松退出任一进程。

原则上,您可以通过在 jekyllserve 命令末尾添加 & 来摆脱一个终端窗口的困扰,以便在后台运行 jekyll (cd build && jekyllserve --livereload &) 并在同一个 grunt 任务中运行 watch,如下所示:

grunt.registerTask(
  'dev',
  [
    'clean',
    'assembledev',
    'exec:servebg',
    'watch'
  ]
);

关于gruntjs - Grunt,使用 Jekyll Serve 进行实时重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706051/

相关文章:

continuous-integration - 无法获得 TeamCity Build Step 来执行 grunt-cli

gruntjs - 使用 Grunt Copy 将图像复制到新目录

jekyll - 设置自动链接到存储库中内容的组织页面

Jekyll:如何更改集合的默认顺序

gruntjs - 为什么 grunt-contrib-watch livereload 不起作用?

javascript - 使用 grunt 将版本号动态添加到 dest 输出文件

javascript - Grunt、Compass、Foundation(foundationpress wordpress 主题)

github - 无法构建到 Github Pages

guard - LiveReload with Guard 无法工作,尽管它说可以

javascript - 浏览器未使用 Grunt Livereload 重新加载