A tool library for conveniently using Node.js in Python.
English | 简体中文
pip install py-node-manager
from py_node_manager import NodeManager # Create NodeManager instance # download_node=True means automatically download Node.js if not found in system # node_version specifies the Node.js version to download manager = NodeManager(download_node=True, node_version='18.17.0') # Get paths to Node.js, npm, and npx node_path = manager.node_path # Path to downloaded Node.js, None if using system Node.js npm_path = manager.npm_path # Path to npm npx_path = manager.npx_path # Path to npx # Get environment variables (if using downloaded Node.js) node_env = manager.node_env # Environment variables dictionary
import subprocess from py_node_manager import NodeManager manager = NodeManager(download_node=True, node_version='18.17.0') # Run Node.js commands result = subprocess.run( [manager.npm_path, 'init', '-y'], env=manager.node_env, capture_output=True, text=True ) print(result.stdout)
from py_node_manager import NodeManager # Will raise an exception if Node.js is not found in the system manager = NodeManager(download_node=False, node_version='18.17.0')
This project uses pytest for testing with 100% code coverage.
To run the tests in the conda environment:
# Install dependencies pip install -e . pip install -r requirements-dev.txt # Run tests pytest tests/ -v # Run tests with coverage report pytest tests/ --cov=py_node_manager --cov-report=term-missing
tests/test_node_manager.py- Complete test suite for NodeManager classtests/conftest.py- pytest configurationtests/__init__.py- Package initialization
All code paths are tested including:
- Normal execution paths
- Error handling scenarios
- Platform-specific behaviors
- CLI mode logging
- Cached Node.js usage