Package Exports
- process-utils/override-argv
- process-utils/override-cwd
- 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
process-utils
Utilities for Node.js process
handling
Installation
npm install process-utils
Available utilities
override-env
Overrides process.env
until returned 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);
Provide a whitelist of env vars to expose on a copy
process.env.FOO = "bar";
process.env.LOREM = "ipsum";
const { restoreEnv, originalEnv } = overrideEnv({ whitelist: ["FOO"] });
// Exposes onlywhitelisted props
console.log(process.env.FOO); // "bar"
console.log(process.env.LOREM); // undefined
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-argv
Overrides process.argv
until returned restoreArgv()
is called. Helpful when testing modules which behavior relies on command line arguments
const overrideArgv = require("process-utils/override-argv");
const { restoreArg, originalArgv } = overrideEnv();
// Exposes original `process.argv`
console.log(originalArgv);
// Counterpart by default contains only first item from original argv
console.log(process.argv);
// Provides a callback to restore previous state
restoreArgv();
Optionally callback can be passed to overrideEnv
, it's invoked immediately, and only for a time of it's execution process.argc
is overriden. if callback returns thenable then process.argv
is restored when given thenable resolves.
Supported options
sliceAt integer
(default: 1
)
Til which index should original process.argv
be exposed on counterpart
args iterable
(default: []
)
Arguments to add to counterpart process.argv
override-cwd
Overrides process current working directory (as resolved via process.cwd()
) until returned restoreCwd()
is called. Helpful when testing modules which behavior relies on current working directory resolution
const overrideCwd = require("process-utils/override-cwd");
const { restoreCwd, originalCwd } = overrideCwd("/some/new/test/cwd");
// Exposes original `process.argv`
console.log(originalCwd);
//
console.log(process.cwd()); // /some/new/test/cwd
// Provides a callback to restore previous state
restoreCwd();
Optionally callback can be passed to overrideCwd
, it's invoked immediately, and only for a time of it's execution current working directory is overriden. if callback returns thenable then current working directly is restored when given thenable resolves.
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