grunt-jekyll
Getting Started
This plugin requires Grunt ~0.4.0
and Jekyll >= v1.0.0
.
If you haven't used Grunt before, be sure to check out the Getting Started guide which explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process you may install this plugin with the command:
npm install grunt-jekyll --save-dev
After the plugin has been installed, load it in your Gruntfile with:
grunt.loadNpmTasks('grunt-jekyll');
Jekyll Task
Run this task with the grunt jekyll
command.
This task helps you compile your Jekyll static site with Grunt.
Jekyll Subcommands
-
serve
Type:
boolean
Default:false
Build the site and start a Jekyll development server on
http://localhost:4000
. The server lasts forever: kill it with Ctrl + C.If
serve
is false, the site is built with thebuild
command.For complex projects you may want to use grunt-contrib-connect or grunt-browser-sync instead.
-
doctor
Type:
boolean
Default:false
Test your site for common errors and deprecated code. Ignores all other options except
src
,config
, andbundleExec
.
Options
You can use all of the configuration options available in the Jekyll Documentation, as well as some special options provided by this plugin.
-
src
Type:
string
Default:.
Directory where Jekyll will read files.
-
dest
Type:
string
Default:./_site
Directory where Jekyll will write files.
-
[no_]watch
Type:
boolean
Default:false
Regenerate the site when files are modified. If you are running multiple watch tasks in a project you should use grunt-contrib-watch instead.
-
config
Type:
string
Default:_config.yml
Specify a custom configuration file. Multiple files separated by a comma will cascade right to left.
-
raw
Type:
string
Create a temporary _config.yml with the contents of
raw
. This config file has greater precedence than the files inconfig
. -
safe
Type:
boolean
Default:false
Disables custom plugins, and ignore symbolic links.
-
plugins
Type:
string
Default:./_plugins
Specify a plugins directory.
-
layouts
Type:
string
Default:./_layouts
Specify a layouts directory.
-
drafts
Type:
boolean
Default:false
Process and render draft posts.
-
future
Type:
boolean
Default:false
Publishes posts with a future date.
-
lsi
Type:
boolean
Default:false
Produce an index for related posts.
-
limit_posts
Type:
number
Limit the number of posts to parse and publish.
-
force_polling
Type:
boolean
Force watch to use polling.
-
verbose
Type:
boolean
Print verbose output.
-
quiet
Type:
boolean
Silence the normal output from Jekyll during a build.
-
incremental
Type:
boolean
Enable the experimental incremental build feature. Incremental build only re-builds posts and pages that have changed, resulting in significant performance improvements for large sites, but may also break site generation in certain cases.
-
livereload
Type:
boolean
LiveReload refreshes your browser after a change.
-
port
Type:
string
ornumber
Listen on the given port (requires
serve
). -
host
Type:
string
Listen at the given hostname (requires
serve
). -
baseurl
Type:
string
Serve the website from the given base URL (requires
serve
). -
skip_initial_build
Type:
boolean
Skips the initial site build which occurs before the server is started.
-
open_url
Type:
boolean
Opens the local URL in your default browser.
-
bundleExec
Type:
boolean
Default:false
Run
jekyll
with bundle exec.
Usage examples
Follow this Grunt example to get started with grunt-jekyll right away.
Example config
grunt.initConfig({
jekyll: { // Task
options: { // Universal options
bundleExec: true,
src : '<%= app %>'
},
dist: { // Target
options: { // Target options
dest: '<%= dist %>',
config: '_config.yml,_config.build.yml'
}
},
serve: { // Another target
options: {
serve: true,
dest: '.jekyll',
drafts: true,
future: true
}
}
}
});
grunt.loadNpmTasks('grunt-jekyll');
grunt.registerTask('default', ['jshint', 'jekyll']);
Example usage
raw
option
Use the grunt.initConfig({
jekyll: {
dist: {
options: {
config: '_config.yml',
// Construct a string with JavaScript.
// Remember, in YAML line breaks and indentation matter.
raw: 'pygments: false\n' +
'exclude: [\'development\']\n' +
'author:\n' +
' name: ' + fetchAuthor() + '\n' +
' email: ' + fetchEmail()
}
}
}
});
Changelog
- See CHANGELOG.md for further updates
- v0.4.3: More options support for Jekyll 3.0.0
- v0.4.2: More internal optimizations.
- v0.4.1: Internal optimizations.
- v0.4.0: Added setup for tests.
- v0.3.9: Consolidating branches and bumping version number.
- v0.3.8: Added @robwierzbowski's raw option and other PRs.
- v0.3.6:
- Reviewed Jekyll's source and updated plugin with new flags.
- Reviewed and warned about deprecated flags.
- Updated documentation to match flag updates. (Rewritten as a list)
- v0.3.3: Updated link in documentation. Added to-do list.
- v0.3.2: Added option to select config file. Removed deprecated
--pygments
option flag. Bugfixes. - v0.3.0: Update for Jekyll 1.0
- v0.2.1: Fixed destination path option.
- v0.2.0: Updated README with better options. Options are more flexible.
- v0.1.6: Updated README with better example.
- v0.1.0: Initial Release.
License
MIT