Node.js virtual environment builder for creating isolated Node.js environments
80
Configuration system for managing default settings, loading configuration files, and handling environment-specific options for nodeenv operations.
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 = NoneLoads 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
"""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.
"""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 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 = falseimport 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}")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}")import nodeenv
# Display current configuration
nodeenv.Config._dump()import nodeenv
import sys
# Dump configuration defaults (used by --dump-config-defaults)
sys.argv = ['nodeenv', '--dump-config-defaults']
nodeenv.main() # Will call Config._dump()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 settingsimport 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 values are resolved in the following order (highest to lowest precedence):
--config-file)This allows for flexible configuration management with appropriate override capabilities for different use cases.
Install with Tessl CLI
npx tessl i tessl/pypi-nodeenvdocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10