gh-issues-for-comments
v0.1.0
Published
Automatically create Github issues to use as blog comments
Downloads
3
Readme
gh-issues-for-comments
Automatically open a Github issue as blog comments for every articles of your blog. It also creates a gh-comments.json
file to keep track of created issues for future executions and to open issues only for new articles.
This package is useful if you have a statically generated blog, such as Jekyll or Metalsmith, and you want to use Github issues as comments instead of the evil Disqus
. For more details read Replacing Disqus with Github Comments or Using GitHub Issues for Blog Comments
Install
npm install gh-issues-for-comments --save
Usage
import ghComments from 'gh-issues-for-comments';
// Array of articles with any shape you like, for example obtained from Markdown files.
// If you use default options each article must have 'id' and 'title' properties
const articles = [
{ id: 1, title: 'Hello world' },
{ id: 2, title: 'Hello world 2' }
];
ghComments(articles, {
username: 'jiayihu',
repo: 'blog',
token: '123GithubOAuthToken',
})
.then(createdIssues => console.log(createdIssues))
.catch(error => console.error('Error with issues creation', error));
API
ghComments(articles, options): Promise
Create a Github issue for every article without a comments issue yet. Returns a Promise
with the updated map with <article, issueId>
pairs. It's the same object saved in gh-comments.json
.
articles
is an Array
of articles objects with any shape. Each article will be used to return the data for its issue in getIssue(article)
option.
options
has the following shape:
options.username (required)
Type:
string
Github username
options.repo (required)
Type:
string
Github repository name
options.token (required)
Type:
string
Github OAuth access token. Read here for more details. The only
scope
needed by the package ispublic_repo
.options.idProperty (optional)
Type:
string
Default value:
id
Article property to use as unique id
options.jsonPath (optional)
Type:
string
Default value:
gh-comments.json
Path to the JSON file where articles issue ids are stored
options.getIssue (optional)
Type:
Function
Default value:
function getIssue(article) { return { title: `Comments: ${article.title}`, body: `This issue is reserved for comments to **${article.title}**. Leave a comment below and it will be shown in the blog page.`, labels: ['comments'], }; }
Returns the issue data based on the article