@ryuyx/pvm
v0.0.4
Published
Cross-platform CLI tool for managing proxy environment variables
Downloads
380
Maintainers
Readme
Proxy Manager
🚀 Cross-platform CLI tool for managing proxy environment variables
Features
✅ Cross-platform - Works on Windows, macOS, and Linux
✅ Simple CLI - Easy-to-use commands for managing proxies
✅ Persistent Config - Save proxy settings for reuse
✅ NO_PROXY Support - Manage proxy bypass lists
✅ Shell Integration - Optional shell functions for seamless usage
Installation
npm install -g @ryuyx/pvmQuick Start
# Set proxy
pvm set http://127.0.0.1:7890
# Enable proxy (shows commands to run)
pvm on
# Check status
pvm list
# Disable proxy
pvm offUsage
Basic Commands
Check current status:
pvm
pvm listSet proxy URL:
# Set both HTTP and HTTPS to the same URL
pvm set http://127.0.0.1:7890
# Set HTTP and HTTPS separately
pvm set --http http://127.0.0.1:7890 --https http://127.0.0.1:7891
# Set with NO_PROXY list
pvm set http://127.0.0.1:7890 --no-proxy "localhost,127.0.0.1,.local"Enable/Disable proxy:
pvm on # Shows commands to enable
pvm off # Shows commands to disableConfiguration Management
View configuration:
pvm config showSet specific values:
pvm config set http http://127.0.0.1:7890
pvm config set https http://127.0.0.1:7891
pvm config set both http://127.0.0.1:7890
pvm config set no-proxy "localhost,127.0.0.1"Manage NO_PROXY list:
# Add domain to NO_PROXY
pvm config add no-proxy .local
# Remove domain from NO_PROXY
pvm config rm no-proxy .localReset to defaults:
pvm config resetShell Integration
Since Node.js runs in a subprocess and cannot modify the parent shell's environment, you have the following options:
Option 1: Automatic Installation (Recommended)
Simply run the install command to automatically add shell integration:
pvm installThis will:
- Detect your shell type (Bash, Zsh, or PowerShell)
- Add the integration function to your shell config file
- Enable
pvm onandpvm offto work automatically
Then reload your shell:
source ~/.bashrc # or ~/.zshrc for Zsh
# Or simply restart your terminalTo uninstall:
pvm uninstallOption 2: Manual Copy-Paste (Simple)
# 1. Run this to see the commands
pvm on
# 2. Copy and paste the output commands into your shell
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
# ... etcOption 3: Manual Shell Function (Advanced)
If you prefer to add the function manually, add this to your shell profile:
For Bash/Zsh (~/.bashrc or ~/.zshrc):
pvm() {
if [ "$1" = "on" ]; then
eval "$(command pvm on 2>/dev/null | grep -E '^(export|unset)')"
echo "✓ Proxy enabled"
elif [ "$1" = "off" ]; then
eval "$(command pvm off 2>/dev/null | grep -E '^(export|unset)')"
echo "✗ Proxy disabled"
else
command pvm "$@"
fi
}For PowerShell ($PROFILE):
function pvm {
if ($args[0] -eq "on") {
$commands = pvm-actual on 2>$null | Select-String '^\$env:|^Remove-Item'
$commands | ForEach-Object { Invoke-Expression $_ }
Write-Host "✓ Proxy enabled" -ForegroundColor Green
} elseif ($args[0] -eq "off") {
$commands = pvm-actual off 2>$null | Select-String '^\$env:|^Remove-Item'
$commands | ForEach-Object { Invoke-Expression $_ }
Write-Host "✗ Proxy disabled" -ForegroundColor Red
} else {
pvm-actual @args
}
}
# Rename the actual command
Set-Alias -Name pvm-actual -Value pvm.cmdThen reload your shell:
source ~/.bashrc # or ~/.zshrcNow you can use:
pvm on # Actually enables proxy
pvm off # Actually disables proxyHow It Works
- Configuration Storage: Settings are saved to a config file using the conf library
- Environment Variables: Sets HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (both uppercase and lowercase)
- Cross-platform: Automatically detects shell type and generates appropriate commands
Configuration File Location
Config is stored at:
- Windows:
%APPDATA%\proxy-manager-nodejs\Config\config.json - macOS:
~/Library/Preferences/proxy-manager-nodejs/config.json - Linux:
~/.config/proxy-manager-nodejs/config.json
Commands Reference
| Command | Description |
|---------|-------------|
| pvm | Show current status |
| pvm on | Display commands to enable proxy |
| pvm off | Display commands to disable proxy |
| pvm list | Show configuration and status |
| pvm set <url> | Set proxy URL |
| pvm install | Auto-install shell integration |
| pvm uninstall | Remove shell integration |
| pvm config show | Show configuration |
| pvm config set <key> <value> | Set config value |
| pvm config add no-proxy <item> | Add to NO_PROXY list |
| pvm config rm no-proxy <item> | Remove from NO_PROXY list |
| pvm config reset | Reset to defaults |
Environment Variables
This tool manages the following environment variables:
http_proxy/HTTP_PROXY- HTTP proxy URLhttps_proxy/HTTPS_PROXY- HTTPS proxy URLno_proxy/NO_PROXY- Comma-separated list of hosts to bypass proxy
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT © Liu Yuxuan
Related Projects
Made with ❤️ for developers who need proxy management
