https://github.com/voxpelli/node-github-publish
Publishes a file to a repository through the GitHub Contents API
https://github.com/voxpelli/node-github-publish
api-wrapper crud github-api node-js
Last synced: 3 months ago
JSON representation
Publishes a file to a repository through the GitHub Contents API
- Host: GitHub
- URL: https://github.com/voxpelli/node-github-publish
- Owner: voxpelli
- License: mit
- Created: 2015-07-02T16:35:09.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2025-08-03T21:31:56.000Z (5 months ago)
- Last Synced: 2025-09-03T22:56:39.710Z (4 months ago)
- Topics: api-wrapper, crud, github-api, node-js
- Language: JavaScript
- Size: 96.7 KB
- Stars: 26
- Watchers: 2
- Forks: 8
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# GitHub Publish
[](https://www.npmjs.com/package/github-publish)
[](https://www.npmjs.com/package/github-publish)
[](https://github.com/voxpelli/badges-cjs-esm)
[](https://github.com/voxpelli/types-in-js)
[](https://github.com/neostandard/neostandard)
[](https://mastodon.social/@voxpelli)
Publishes a file to a repository through the GitHub Contents API
## Installation
### NPM
```bash
npm install github-publish
```
## Current status
**Stable, but not feature complete**
Currently missing support for deletes.
## Usage
```javascript
import { GitHubPublisher } from 'github-publish';
const publisher = new GitHubPublisher('token123', 'voxpelli', 'voxpelli.github.com');
const result = await publisher.publish('_post/2015-07-17-example-post.md', 'file content');
// If "result" is truthy then the post was successfully published
```
## Classes
* **GitHubPublisher(token, username, repo, [branch])** – creates a publisher object with an [access token](https://developer.github.com/v3/#authentication) for the GitHub API, the `username` of the owner of the repository to publish to and the name of the repository itself as `repo`.
## `GitHubPublisher` methods
* **retrieve(filename)** – returns a `Promise` that resolves with either an object containing the `content` and `sha` of the existing file or with `false` if no such file exists in the repository
* **publish(filename, content, [options])** – publishes the specified `content` as the `filename` to the `repo` of the publisher object. `content` should be either a `string` or a `Buffer`. Returns a `Promise` which resolves to the `sha` of the created object on success and to `false` on failure (failure is likely caused by a collision with a pre-existing file, as long as one haven't specified that it should be overridden).
## `publish()` options
* **force** – whether to replace any pre-existing file no matter what
* **message** – a custom commit message. Default is `new content`
* **sha** – the sha of an existing file that one wants to replace