JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 859585
  • Score
    100M100P100Q184897F
  • License ISC

Utilities for process object

Package Exports

  • process-utils/override-env
  • process-utils/override-stderr-write
  • process-utils/override-stdout-write

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (process-utils) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

*nix build status Windows build status Tests coverage Transpilation status npm version

process-utils

Utilities for Node.js process handling

Installation

npm install process-utils

Available utilities

override-env

Overrides process.env until provided restoreEnv() is called. Helpful when testing modules which behavior relies on environment settings.

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
const { restoreEnv, originalEnv } = overrideEnv();
// Exposes original `process.env`
console.log(originalEnv.FOO); // "bar";
// Current `process.env` points other (empty plain) object
console.log(process.env.FOO); // undefined;

// Provides a callback to restore previous state
restoreEnv();
console.log(process.env.FOO); // "bar"

Optionally callback can be passed to overrideEnv, it's invoked immediately, and only for a time of it's execution process.env is overriden:

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
// Passed callback is invoked immediately
overrideEnv(originalEnv => {
  // Exposes original `process.env`
  console.log(originalEnv.FOO); // "bar";
  // Current `process.env` points other (empty plain) object
  console.log(process.env.FOO); // undefined;
});
// After return the state is restored
console.log(process.env.FOO); // "bar"

However if callback returns thenable then process.env is restored when given thenable resolves:

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
overrideEnv(() => new Promise(resolve => setTimeout(resolve, 100)));
// Still process.env is not resolved
console.log(process.env.FOO); // undefined
setTimeout(() => {
  // Original process.env is back
  console.log(process.env.FOO); // "bar"
}, 110);
Override env as copy of original
process.env.FOO = "bar";
const { restoreEnv, originalEnv } = overrideEnv({ asCopy: true });
// Exposes process.env props
console.log(process.env.FOO); // "bar"

process.env.BAR = "elo";
// Further updates doesn't affect cached original env
console.log(originalEnv.BAR); // undefined

// Provides a callback to restore previous state
restoreEnv();
console.log(process.env.BAR); // undefined

override-stdout-write & override-stderr-write

Override process.stdout.write or process.stderr.write with provided alternative

const overrideStdoutWrite = require("process-utils/override-stdout-write");

// Configure decorator that will strip ANSI codes
const {
  originalStdoutWrite, // Original `write` bound to `process.stdout`
  originalWrite, // Original `write` on its own
  restoreStdoutWrite // Allows to restore previous state
} = overrideStdoutWrite((data, superWrite) => superWrite(stripAnsi(data)));

process.stdout.write(someAnsiCodeDecoratedString); // will be output with ANSI codes stripped out

// Restore previous state
restoreStdoutWrite();

Tests

npm test