Octokit From Auth
octokit-from-auth simplifies the instantiation of a GitHub Octokit client, abstracting away the complexities of authentication token resolution. It automatically attempts to retrieve a token from `process.env.GH_TOKEN` or by executing `gh auth token` via the `get-github-auth-token` package. The library offers two functions: `octokitFromAuth`, which rejects if no token is found, and `octokitFromAuthSafe`, which resolves to an unauthenticated Octokit instance if no token is available. The current stable version is 0.3.2. Releases are consistent, primarily for dependency updates and minor fixes, with new features introduced in minor versions. It ships with TypeScript types and requires Node.js >=18.3.0. This package differentiates itself by offering a robust, opinionated, and flexible approach to Octokit instantiation and authentication, minimizing boilerplate for interacting with the GitHub API.
Common errors
-
Error [ERR_REQUIRE_ESM]: require() of ES Module .../node_modules/octokit-from-auth/dist/index.js from .../my-script.js not supported.
cause Attempting to `require()` an ESM-only package in a CommonJS module.fixConvert your consuming script to an ES module by using `import` statements and ensuring your `package.json` specifies `"type": "module"` or by renaming your file to `.mjs`. -
Error: No GitHub auth token could be found.
cause The `octokitFromAuth` function could not find an authentication token from `process.env.GH_TOKEN`, `gh auth token`, or the provided options.fixSet the `GH_TOKEN` environment variable (e.g., `GH_TOKEN=gho_... node my-script.js`), or ensure the GitHub CLI (`gh`) is installed and authenticated, or explicitly pass an `auth` option to `octokitFromAuth({ auth: 'YOUR_TOKEN' })`.
Warnings
- gotcha The `octokitFromAuth` function will throw an error if it cannot resolve an authentication token. If you need to proceed without authentication when a token is unavailable, use `octokitFromAuthSafe` instead.
- breaking This package is ESM-only and requires Node.js version 18.3.0 or higher. Attempting to use it in a CommonJS environment or with older Node.js versions will result in import errors.
- breaking The underlying `octokit` dependency was updated to `v5` in version 0.3.2. While `octokit-from-auth` itself aims for API stability, direct interactions with the returned `Octokit` instance may be affected by breaking changes introduced in `octokit@v5`.
Install
-
npm install octokit-from-auth -
yarn add octokit-from-auth -
pnpm add octokit-from-auth
Imports
- octokitFromAuth
const { octokitFromAuth } = require('octokit-from-auth');import { octokitFromAuth } from 'octokit-from-auth'; - octokitFromAuthSafe
import octokitFromAuthSafe from 'octokit-from-auth';
import { octokitFromAuthSafe } from 'octokit-from-auth'; - Octokit
import { Octokit } from 'octokit-from-auth';import { Octokit } from '@octokit/core';
Quickstart
import { octokitFromAuth, octokitFromAuthSafe } from 'octokit-from-auth';
async function run() {
// Attempt to create an authenticated Octokit instance.
// It will use process.env.GH_TOKEN or `gh auth token` if available.
// This function will throw an error if no auth token is found.
try {
const authenticatedOctokit = await octokitFromAuth();
const { data: user } = await authenticatedOctokit.request('GET /user');
console.log(`Authenticated as ${user.login}.`);
} catch (error) {
console.warn(`Could not create authenticated Octokit: ${error.message}`);
console.warn('Falling back to safe, unauthenticated Octokit...');
// Create an Octokit instance that is unauthenticated if no token is found.
const unauthenticatedOctokit = await octokitFromAuthSafe();
const { data: publicUser } = await unauthenticatedOctokit.request('GET /users/{username}', {
username: 'octokit',
});
console.log(`Accessed public user ${publicUser.login} without authentication.`);
}
}
run();