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-gitlog
In 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.