Skip to main content
Glama

Voice Mode

by mbailey
setup-npm-global.sh•3.61 kB
#!/usr/bin/env bash # Setup npm to install global packages without sudo # Works on macOS and Linux # This script is idempotent - safe to run multiple times set -euo pipefail # Colors for output GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' # No Color # Helper functions info() { echo -e "${BLUE}[INFO]${NC} $1" } success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } error() { echo -e "${RED}[ERROR]${NC} $1" } # Detect shell configuration file detect_shell_config() { if [[ -n "${BASH_VERSION:-}" ]]; then if [[ -f "$HOME/.bash_profile" ]]; then echo "$HOME/.bash_profile" else echo "$HOME/.bashrc" fi elif [[ -n "${ZSH_VERSION:-}" ]]; then echo "$HOME/.zshrc" else # Default to bashrc if we can't detect echo "$HOME/.bashrc" fi } main() { info "Setting up npm to install global packages without sudo..." # Check if npm is installed if ! command -v npm &> /dev/null; then error "npm is not installed. Please install Node.js and npm first." exit 1 fi NPM_GLOBAL_DIR="$HOME/.npm-global" SHELL_CONFIG=$(detect_shell_config) # Check current npm prefix CURRENT_PREFIX=$(npm config get prefix 2>/dev/null || echo "") # Check if already configured if [[ "$CURRENT_PREFIX" == "$NPM_GLOBAL_DIR" ]]; then success "npm is already configured to use $NPM_GLOBAL_DIR" else # Create npm global directory if [[ ! -d "$NPM_GLOBAL_DIR" ]]; then info "Creating $NPM_GLOBAL_DIR directory..." mkdir -p "$NPM_GLOBAL_DIR" fi # Configure npm prefix info "Configuring npm to use $NPM_GLOBAL_DIR..." npm config set prefix "$NPM_GLOBAL_DIR" success "npm prefix set to $NPM_GLOBAL_DIR" fi # Check if PATH already contains npm-global/bin if [[ ":$PATH:" == *":$NPM_GLOBAL_DIR/bin:"* ]]; then success "PATH already includes $NPM_GLOBAL_DIR/bin" else # Add to PATH in shell config info "Adding $NPM_GLOBAL_DIR/bin to PATH in $SHELL_CONFIG..." # Check if the export line already exists in shell config if grep -q "export PATH=\"\$HOME/.npm-global/bin:\$PATH\"" "$SHELL_CONFIG" 2>/dev/null; then warning "PATH export already exists in $SHELL_CONFIG" else # Add export to shell config echo '' >> "$SHELL_CONFIG" echo '# npm global packages path (added by setup-npm-global.sh)' >> "$SHELL_CONFIG" echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> "$SHELL_CONFIG" success "Added PATH export to $SHELL_CONFIG" warning "You need to reload your shell configuration:" echo " Run: source $SHELL_CONFIG" echo " Or start a new terminal session" fi fi echo "" success "npm global setup complete!" echo "" info "You can now install global packages without sudo:" echo " npm install -g <package-name>" echo "" # Show current configuration info "Current configuration:" echo " npm prefix: $(npm config get prefix)" echo " Shell config: $SHELL_CONFIG" # Check if we need to reload if [[ ":$PATH:" != *":$NPM_GLOBAL_DIR/bin:"* ]]; then echo "" warning "Don't forget to reload your shell configuration!" echo " Run: source $SHELL_CONFIG" fi } # Run main function main "$@"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbailey/voicemode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server