Cross-platform CLI tool for managing proxy environment variables
npm install @ryuyx/pvmbash
npm install -g @ryuyx/pvm
`
Quick Start
`bash
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 off
`
Usage
$3
Check current status:
`bash
pvm
pvm list
`
Set proxy URL:
`bash
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:
`bash
pvm on # Shows commands to enable
pvm off # Shows commands to disable
`
$3
View configuration:
`bash
pvm config show
`
Set specific values:
`bash
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:
`bash
Add domain to NO_PROXY
pvm config add no-proxy .local
Remove domain from NO_PROXY
pvm config rm no-proxy .local
`
Reset to defaults:
`bash
pvm config reset
`
Shell Integration
Since Node.js runs in a subprocess and cannot modify the parent shell's environment, you have the following options:
$3
Simply run the install command to automatically add shell integration:
`bash
pvm install
`
This will:
- Detect your shell type (Bash, Zsh, or PowerShell)
- Add the integration function to your shell config file
- Enable pvm on and pvm off to work automatically
Then reload your shell:
`bash
source ~/.bashrc # or ~/.zshrc for Zsh
Or simply restart your terminal
`
To uninstall:
`bash
pvm uninstall
`
$3
`bash
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"
... etc
`
$3
If you prefer to add the function manually, add this to your shell profile:
For Bash/Zsh (~/.bashrc or ~/.zshrc):
`bash
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):
`powershell
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.cmd
`
Then reload your shell:
`bash
source ~/.bashrc # or ~/.zshrc
`
Now you can use:
`bash
pvm on # Actually enables proxy
pvm off # Actually disables proxy
`
How It Works
1. Configuration Storage: Settings are saved to a config file using the conf library
2. Environment Variables: Sets HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (both uppercase and lowercase)
3. 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 | Set proxy URL |
| pvm install | Auto-install shell integration |
| pvm uninstall | Remove shell integration |
| pvm config show | Show configuration |
| pvm config set | Set config value |
| pvm config add no-proxy | Add to NO_PROXY list |
| pvm config rm no-proxy | 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 URL
- https_proxy / HTTPS_PROXY - HTTPS proxy URL
- no_proxy / NO_PROXY` - Comma-separated list of hosts to bypass proxy