@digitalronin/browser-or-node
v2.0.2
Published
Checks for browser or node environment
Readme
browser-or-node
A tiny, zero-dependency-at-runtime utility for detecting whether your code is running in a browser or in Node.js, and for pulling basic environment info once you know which.
Useful for isomorphic/universal JavaScript modules that need to branch their behavior depending on the runtime — for example, choosing fetch vs. a Node HTTP client, or deciding whether window/document are safe to touch.
Installing
# using NPM
> npm install @digitalronin/browser-or-node -S
# using Yarn
> yarn add @digitalronin/browser-or-node --saveUsage
const { isNode, isBrowser, getInfo } = require('@digitalronin/browser-or-node');
console.log(isNode());
console.log(isBrowser());
console.log(getInfo());API
isNode()
Returns true if the code is running in a Node.js process, false otherwise.
if (isNode()) {
// safe to use Node-only APIs, e.g. `fs`, `process.env`
}isBrowser()
Returns true if the code is running in a browser (i.e. window and window.document are defined), false otherwise.
if (isBrowser()) {
// safe to use `window`, `document`, `navigator`, etc.
}getInfo()
Returns an object describing the current environment, shaped differently depending on the runtime:
In Node.js:
{ type: 'node', info: { version: '24.0.0', // process.versions.node platform: 'darwin', // process.platform } }In a browser:
{ type: 'browser', info: { navigator: 'Mozilla/5.0 ...', // navigator.userAgent, or undefined if unavailable } }If neither Node.js nor a browser is detected (e.g. a Web Worker or an unusual embedded runtime):
{ type: 'unknown'; }
Development
> yarn install
> yarn testTests run via Jest and are checked on every push/PR by GitHub Actions.
Publishing
Publishing to npm is automated via GitHub Actions and is triggered by creating a GitHub Release — there is no manual npm publish step.
- Bump the
versionfield inpackage.json(following semver) and commit the change tomaster. - Create a GitHub Release with a tag matching the new version, prefixed with
v(e.g.v2.0.1):
This can also be done from the "Releases" page in the GitHub UI.> gh release create v2.0.1 --title "v2.0.1" --notes "Description of the change" - Publishing the release triggers the
Releaseworkflow, which:- Installs dependencies
- Runs
format:checkandtest - Publishes the package to the npm registry with provenance attached
- Once the workflow completes successfully, the new version is live on npm. Progress can be checked under the repo's Actions tab.
The workflow authenticates to npm using OpenID Connect (trusted publishing) — no npm token or local npm login is needed to release a new version.
License
MIT
