CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-nodeenv

Node.js virtual environment builder for creating isolated Node.js environments

80

1.25x
Overview
Eval results
Files

configuration.mddocs/

Configuration Management

Configuration system for managing default settings, loading configuration files, and handling environment-specific options for nodeenv operations.

Capabilities

Configuration Class

The Config class provides centralized configuration management with default values and file-based configuration loading.

class Config(object):
    """
    Configuration namespace with defaults and loading capabilities.
    
    Attributes:
    node (str): Default Node.js version ('latest')
    npm (str): Default npm version ('latest') 
    with_npm (bool): Whether to install npm by default (False)
    jobs (str): Number of parallel jobs for compilation ('2')
    without_ssl (bool): Disable SSL support (False)
    debug (bool): Enable debug output (False)
    profile (bool): Enable profiling (False)
    make (str): Make command to use ('make')
    prebuilt (bool): Use prebuilt binaries by default (True)
    ignore_ssl_certs (bool): Ignore SSL certificate errors (False)
    """
    
    # Default configuration values
    node = 'latest'
    npm = 'latest'
    with_npm = False
    jobs = '2'
    without_ssl = False
    debug = False
    profile = False
    make = 'make'
    prebuilt = True
    ignore_ssl_certs = False
    mirror = None

Configuration Loading

Loads configuration from external files to customize default behavior.

@classmethod
def _load(cls, configfiles, verbose=False):
    """
    Load configuration from files.
    
    Parameters:
    configfiles (str or list): Path(s) to configuration file(s)
    verbose (bool): Enable verbose logging during load (default: False)
    
    Loads configuration values from external file to override
    default settings. Supports various configuration file formats
    and provides validation of configuration values.
    
    Configuration files can specify:
    - Default Node.js and npm versions
    - Build and compilation options
    - SSL and security settings
    - Mirror and download URLs
    """

Configuration Export

Exports current configuration values for debugging and documentation purposes.

@classmethod  
def _dump(cls):
    """
    Dump current configuration values.
    
    Outputs current configuration state for debugging and
    documentation purposes. Used by the --dump-config-defaults
    command-line option to show effective configuration.
    
    Displays all configuration attributes and their current
    values in a structured format.
    """

Global Configuration Variables

nodeenv maintains several global configuration variables that affect operation:

# SSL Certificate Handling
ignore_ssl_certs: bool
"""Global flag to ignore SSL certificate validation during downloads."""

# Download Source Configuration  
src_base_url: str
"""Base URL for Node.js downloads, configurable via mirrors."""

Configuration File Format

Configuration files use standard INI format with sections for different configuration areas:

[nodeenv]
node = 16.20.0
npm = 8.19.0
with_npm = true
jobs = 4
without_ssl = false

[build]
debug = false
profile = false

[network]
mirror = https://npm.taobao.org/mirrors/node
ignore_ssl_certs = false

Usage Examples

Using Default Configuration

import nodeenv

# Configuration is automatically loaded with defaults
print(f"Default Node.js version: {nodeenv.Config.node}")
print(f"Default npm version: {nodeenv.Config.npm}")
print(f"Install npm by default: {nodeenv.Config.with_npm}")
print(f"Default parallel jobs: {nodeenv.Config.jobs}")

Loading Custom Configuration

import nodeenv

# Load configuration from file
nodeenv.Config._load('/path/to/nodeenv.conf', verbose=True)

# Configuration values are now updated
print(f"Configured Node.js version: {nodeenv.Config.node}")
print(f"Configured npm version: {nodeenv.Config.npm}")

Dumping Configuration

import nodeenv

# Display current configuration
nodeenv.Config._dump()

Command Line Configuration Override

import nodeenv
import sys

# Dump configuration defaults (used by --dump-config-defaults)
sys.argv = ['nodeenv', '--dump-config-defaults']
nodeenv.main()  # Will call Config._dump()

Global Configuration Settings

import nodeenv

# Configure global settings
nodeenv.ignore_ssl_certs = True  # Disable SSL verification
nodeenv.src_base_url = 'https://npm.taobao.org/mirrors/node'  # Use mirror

# These affect all subsequent operations
versions = nodeenv.get_node_versions()  # Uses configured mirror and SSL settings

Environment-Specific Configuration

import nodeenv
from argparse import Namespace

# Create environment with configuration override
args = Namespace(
    config_file='/path/to/custom.conf',
    verbose=True,
    node=None,  # Will use value from config file
    npm=None,   # Will use value from config file
    with_npm=None,  # Will use value from config file
    jobs=None   # Will use value from config file
)

# Configuration loaded during argument parsing
parsed_args = nodeenv.parse_args()
nodeenv.create_environment('/path/to/env', parsed_args)

Configuration Precedence

Configuration values are resolved in the following order (highest to lowest precedence):

  1. Command-line arguments
  2. Configuration file values (loaded via --config-file)
  3. Default values from Config class
  4. Environment variables (where applicable)

This allows for flexible configuration management with appropriate override capabilities for different use cases.

Install with Tessl CLI

npx tessl i tessl/pypi-nodeenv

docs

cli.md

configuration.md

environment.md

index.md

node-install.md

package-management.md

utilities.md

version-management.md

tile.json