Node.js PyPI distribution
Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser.
The nodejs-bin Python package redistributes Node.js so that it can be used as a dependency of Python projects. With nodejs-bin
you can call nodejs
, npm
and npx
from both the command line and a Python API.
Note: this is an unofficial Node.js distribution.
This is intended for use within Python virtual environments and containers, it should probably not be used for global installation.
This PyPI distribution is provided by https://github.com/samwillis/nodejs-pypi.
Install
To install:
pip install nodejs-bin
By default the command line node
, npm
and npx
commands are not installed to prevent collisions with already installed Node.js versions. To install them:
pip install 'nodejs-bin[cmd]'
You can specify the Node.js version to install with:
pip install nodejs-bin==<version>
# Example:
pip install nodejs-bin==16.15.1
Command Line Usage
To run Node.js from the command line, use:
python -m nodejs
npm
and npx
are also available as nodejs.npm
and nodejs.npx
:
python -m nodejs.npm
python -m nodejs.npx
If you installed the optional command line commands with pip install 'nodejs-bin[cmd]'
(see above), you can use them directly from the command line as you would normally with Node.js:
node
npm
npx
Python API Usage
node-bin
has a simple Python API that wraps the Node.js command line with the Python subprocess
.
For node
, npm
and npx
there are .call()
, .run()
and .Popen()
methods that match the equivalent subprocess
methods.
To run Node.js from a Python program and return the exit code:
from nodejs import node, npm, npx
node.call(['script.js', 'arg1', ...], **kwargs)
npm.call(['command', 'arg1', ...], **kwargs)
npx.call(['command', 'arg1', ...], **kwargs)
The call(args, **kwargs)
functions wrap subprocess.call()
, passes though all kwargs
and returns the exit code of the process.
To run Node.js from a Python program and return a CompletedProcess object:
from nodejs import node, npm, npx
node.run(['script.js', 'arg1', ...], **kwargs)
npm.run(['command', 'arg1', ...], **kwargs)
npx.run(['command', 'arg1', ...], **kwargs)
The run(args, **kwargs)
functions wrap subprocess.run()
, passes though all kwargs
and returns a CompletedProcess
.
Additionally, to start a Node.js process and return a subprocess.Popen
object, you can use the Popen(args, **kwargs)
functions:
from nodejs import node, npm, npx
node_process = node.Popen(['script.js', 'arg1', ...], **kwargs)
npm_process = npm.Popen(['command', 'arg1', ...], **kwargs)
npx_process = npx.Popen(['command', 'arg1', ...], **kwargs)
The Popen(args, **kwargs)
functions wrap subprocess.Popen()
, passes though all kwargs
and returns a Popen
object.
The nodejs.node
api is also available as nodejs.run
and nodejs.call
and nodejs.Popen
.
Finally, there are a number of convenient attributes on the nodejs
module:
nodejs.node_version
: the version of Node.js that is installed.nodejs.path
: the path to the Node.js executable.
Versions
nodejs-bin offers Node.js Current and LTS (long-term support) versions. See the Node.js Documentation for more information.
The full list of versions is available on PyPI is here: https://pypi.org/project/nodejs-bin/#history
License
The Node.js license.