npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-red-contrib-mock-cli

v1.4.3

Published

Allows running Node-RED modules from command-line.

Downloads

118

Readme

node-red-contrib-mock-cli

This is a Node.js module to allow running a single Node-RED node from command-line, and pipe one to another, using a similar flow than what would be done in the Node-RED graphical interface.

GitHub Workflow Status npm

NPM statistics

Originally made in December 2019 by Alexandre Alapetite at the Alexandra Institute for the SynchroniCity European project.

License: MIT

See examples of use in node-red-contrib-json-multi-schema, node-red-contrib-chunks-to-lines, node-red-http-basic-auth.

Usage

Add an entry file index.js (or another name) to your Node-RED node, next to a package.json that contains a structure like { "node-red": {"node-type": "node-type.js"} }:

const RED = require('node-red-contrib-mock-cli');
const noderedNode = RED.load(require.main);
if (noderedNode) {
	//noderedNode.*	//Access to the Node-RED node instance
	RED.run();
} else {
	console.error('Error loading Node-RED node!');
}

One can then invoke the node from command-line, passing the node type first, and then some optional node properties in JSON format:

node ./index.js node-type --firstProperty='{"Some":"JSON"}' --secondProperty='"Some text"' --thirdProperty='123'

Properties of configuration nodes can be specified using a dot such as:

node ./index.js node-type --server.url='"https://example.net/"' --server.username='"Alice"'

Example

Replace test.js by the name of your entry file (e.g. index.js), and test-node by the name of the type of your node.

printf '{"payload":3} \n {"payload":7}' | node ./test.js test-node --multiplyBy='5'

Outputs:

{"payload":15}
{"payload":35}

JSON in Node-RED format

The command expects JSON messages with a Node-RED structure {"payload":"Example"} from standard input, one line per message.

jq may be used to break down and format a standard payload into a Node-RED payload:

For instance if the input is a list of observations wrapped into a JSON array:

jq -c '.[] | {"payload":.}'

The command outputs JSON messages with a Node-RED structure to standard output, one line per message.

See some examples of inputs and outputs in node-red-contrib-json-multi-schema.

Standard outputs

Only the Node-RED JSON payload is emitted on standard-output (STDOUT), while all other messages and errors are on the standard-error (STDERR).

Advanced usage

It is possible to catch the node events { debug, error, log } to override the default behaviour (which is to write to standard-error):

noderedNode.on('debug', msg => console.warn('Caught event: ' + msg));

Limitations

This module does not have the ambition of exposing the full Node-RED functionality, but instead focuses on simple cases, providing a tiny and efficient layer without any dependency. So for more advanced unit testing, and if requiring the full Node-RED is fine, then check the official node-red-node-test-helper instead of this module.