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. However, it does use only official bits distributed by the official NodeJS maintainers from one of the following sources:
- NodeJS official releases: https://nodejs.org/en/download/releases/
- NodeJS "unofficial" builds: https://github.com/nodejs/unofficial-builds/
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.
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
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
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
# Run Node.js and return the exit code.
node.call(['script.js', 'arg1', ...], **kwargs)
# Run npm and return the exit code.
npm.call(['command', 'arg1', ...], **kwargs)
# Run npx and return the exit code.
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
# Run Node.js and return the exit code.
node.run(['script.js', 'arg1', ...], **kwargs)
# Run npm and return the exit code.
npm.run(['command', 'arg1', ...], **kwargs)
# Run npx and return the exit code.
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
# Start Node.js and return the Popen object.
node_process = node.Popen(['script.js', 'arg1', ...], **kwargs)
# Start npm and return the Popen object.
npm_process = npm.Popen(['command', 'arg1', ...], **kwargs)
# Start npx and return the Popen object.
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.
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
The Node.js license.