eleventy-plugin-gitlog v1.0.2
Git History for Eleventy
A git log or history plugin for Eleventy static site generator. The plugin returns a object with last author details and an array containing the commit history for a page.
This plugin is a wrapper on the node-gitlog module.
Install the Plugin
Install in project directory by running:
npm install --savedev eleventy-plugin-gitlogIn your Eleventy config file (defaults to .eleventy.js) include the plugin :
const getLog = require('eleventy-plugin-gitlog');
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(getLog);
}Configuration Options
The gitlog plugin can be customised via the following options:
const getContributors = require('eleventy-plugin-contributors');
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(contributors, {
commits: 200, // the maxmium number of commits to include
repo: __dirname // location of the repo
fields : ["hash", "abbrevHash", "subject", "authorEmail", "authorName", "authorDate","authorDateRel"] // gitlog fields to return
});
}Here the possible field options (taken from the node-gitlog documentation):
hash- the long hash of the commit e.g. 7dd0b07625203f69cd55d779d873f1adcffaa84aabbrevHash- the abbreviated commit hash e.g. 7dd0b07treeHash- the tree hash of the commitabbrevTreeHash- the abbreviated commit hashparentHashes- the parent hashesabbrevParentHashes- the abbreviated parent hashesauthorName- author name of the commitauthorEmail- author email of the commitauthorDate- author date of the commitauthorDateRel- relative author date of the commitcommitterName- committer namecommitterEmail- committer emailcommitterDate- committer datecommitterDateRel- relative committer datesubject- commit message (first line)body- commit bodyrawBody- raw body (subject + body)
Using the Plugin
Now you can use the getLog filter in your templates, to return an an object with last author details and an array containing the commit history for a page.
The following is a example of the object returned:
{
lastModified: 'Mar 3, 2021',
lastAuthor: 'Dr Ffej',
history: [
{
hash: '09e886beab182d08f4c35ccd98b58923366f9f76',
abbrevHash: '09e886b',
subject: 'Add history table',
authorEmail: '4719968+drffej@users.noreply.github.com',
authorName: 'Dr Ffej',
authorDate: 'Mar 3, 2021'
},
{
hash: '997982f98ee1460c0d9f15c248067bd68ad2b0a8',
abbrevHash: '997982f',
subject: 'First commit',
authorEmail: '4719968+drffej@users.noreply.github.com',
authorName: 'Dr Ffej',
authorDate: 'Mar 3, 2021'
}
]
}For example the following Nujucks markup will return the gitLog for the current page, display the last change and change history:
# Example Gitlog
{% set commits = page.inputPath | getLog -%}
This pages was modified on {{ commits.lastModified }} by {{ commits.lastAuthor }}
Here are the commits contributors for this page:
Data | Ref | Author | Change
:--- |:--- |:--- |:---
{% for commit in commits.history -%}
{{commit.authorDate}}|{{commit.abbrevHash}}|{{commit.authorName}}|{{commit.subject}}
{% endfor -%}License
MIT.