gh-issues-for-comments v0.1.0
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 --saveUsage
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:
stringGithub username
options.repo (required)
Type:
stringGithub repository name
options.token (required)
Type:
stringGithub OAuth access token. Read here for more details. The only
scopeneeded by the package ispublic_repo.options.idProperty (optional)
Type:
stringDefault value:
idArticle property to use as unique id
options.jsonPath (optional)
Type:
stringDefault value:
gh-comments.jsonPath to the JSON file where articles issue ids are stored
options.getIssue (optional)
Type:
FunctionDefault 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
8 years ago