list-github-dir-content
List all the files in a GitHub repo’s directory
Install
$ npm install list-github-dir-content
Usage
const listContent = require('list-github-dir-content');
const myToken = '000';
const filesArray = await listContent.viaTreesApi('Microsoft/vscode', 'src', myToken);
const filesArray = await listContent.viaContentsApi('Microsoft/vscode', 'src', myToken);
API
listContent.viaTreesApi(repo, directory, token)
listContent.viaContentsApi(repo, directory, token)
Both methods return a Promise that resolves with an array of all the files in the chosen directory. They just vary in GitHub API method used. The paths will be relative to root (i.e. if directory
is dist/images
, the array will be ['dist/images/1.png', 'dist/images/2.png']
)
viaTreesApi
is preferred when there are a lot of nested directories. This will try to make a single HTTPS request for the whole repo, regardless of what directory was picked. On big repos this may be of a few megabytes. (GitHub API v3 reference)
viaContentsApi
is preferred when you're downloading a small part of a huge repo. This will make a request for each subfolder requested, which may mean dozens or hundreds of HTTPS requests. (GitHub API v3 reference)
Notice: they're both the same and viaTreesApi
may also try to use viaContentsApi
if the repo has more files than required.
Known issues:
viaContentsApi
is limited to 1000 files per directoryviaTreesApi
is limited to an unknown amount of files per repo
repo
Type: string
The user/repo
combination, such as Microsoft/vscode
.
directory
Type: string
The directory to download, like docs
or dist/images
token
Type: string
A GitHub personal token, get one here: https://github.com/settings/tokens
License
MIT © Federico Brigante