Skip to content

HogaStack/py-node-manager

Repository files navigation

py-node-manager

A tool library for conveniently using Node.js in Python.

Tests Coverage GitHub PyPI Ruff

English | 简体中文

Installation

pip install py-node-manager

Usage

Basic Usage

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

Running Node.js Commands

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)

Without Automatic Node.js Download

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')

Testing

This project uses pytest for testing with 100% code coverage.

Running Tests

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

Test Structure

  • tests/test_node_manager.py - Complete test suite for NodeManager class
  • tests/conftest.py - pytest configuration
  • tests/__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

About

A tool library for conveniently using Node.js in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages