What is the suggested way to install brew, node.js, io.js, nvm, npm on OS X?

后端 未结 9 1184
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-30 15:51

I am trying to use homebrew as much as possible. What\'s the suggested way to install the following on OS X?

  • node.js
  • io.js
  • nvm
  • npm
9条回答
  •  天命终不由人
    2020-11-30 16:29

    If you have previously installed node using brew, then you will have a bunch of extra files that you should clean up before installing node "the right way". Plus, I had to add a few settings to my startup script to make things work smoothly.

    I wrote a script to make this easy.

    # filename:  install-nvm-npm-node
    # author:    Lex Sheehan
    # purpose:   To cleanly install NVM, NODE and NPM
    # dependencies:  brew
    
    NOW=$(date +%x\ %H:%M:%S)
    CR=$'\n'
    REV=$(tput rev)
    OFF=$(tput sgr0)
    BACKUP_DIR=$HOME/backups/nvm-npm-bower-caches/$NOW
    MY_NAME=$(basename $0)
    NODE_VER_TO_INSTALL=$1
    if [ "$NODE_VER_TO_INSTALL" == "" ]; then
        NODE_VER_TO_INSTALL=v0.12.2
    fi
    if [ "`echo "$NODE_VER_TO_INSTALL" | cut -c1-1`" != "v" ]; then
        echo """$CR""Usage:   $ $MY_NAME "
        echo "Example: $ $MY_NAME v0.12.1"
        echo "Example: $ $MY_NAME $CR"
        exit 1
    fi
    echo """$CR""First, run:  $ brew update"
    echo "Likely, you'll need to do what it suggests."
    echo "Likely, you'll need to run: $ brew update$CR"
    echo "To install latest node version, run the following command to get the latest version:  $ nvm ls-remote"
    echo "... and pass the version number you want as the only param to $MY_NAME. $CR"
    echo "Are you ready to install the latest version of nvm and npm and node version $NODE_VER_TO_INSTALL ?$CR"
    echo "Press CTL+C to exit --or-- Enter to continue..."
    read x
    
    echo """$REV""Uninstalling nvm...$CR$OFF"
    # Making backups, but in all likelyhood you'll just reinstall them (and won't need these backups)
    if [ ! -d "$BACKUP_DIR" ]; then 
        echo "Creating directory to store $HOME/.nvm .npm and .bower cache backups: $BACKUP_DIR"
        mkdir -p $BACKUP_DIR
    fi 
    set -x
    mv $HOME/.nvm   $BACKUP_DIR  2>/dev/null
    mv $HOME/.npm   $BACKUP_DIR  2>/dev/null
    mv $HOME/.bower $BACKUP_DIR  2>/dev/null
    { set +x; } &>/dev/null
    
    echo "$REV""$CR""Uninstalling node...$CR$OFF"
    echo "Enter your password to remove user some node-related /usr/local directories"
    set -x
    sudo rm -rf /usr/local/lib/node_modules
    rm -rf /usr/local/lib/node
    rm -rf /usr/local/include/node
    rm -rf /usr/local/include/node_modules
    rm /usr/local/bin/npm
    rm /usr/local/lib/dtrace/node.d
    rm -rf $HOME/.node
    rm -rf $HOME/.node-gyp
    rm /opt/local/bin/node
    rm /opt/local/include/node
    rm -rf /opt/local/lib/node_modules
    rm -rf /usr/local/Cellar/nvm
    brew uninstall node 2>/dev/null
    { set +x; } &>/dev/null
    
    echo "$REV""$CR""Installing nvm...$CR$OFF"
    
    echo "++brew install nvm"
    brew install nvm 
    echo '$(brew --prefix nvm)/nvm.sh'
    source $(brew --prefix nvm)/nvm.sh
    
    echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc):$CR$OFF"
    echo "export NVM_DIR=\"\$(brew --prefix nvm)\"; [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"$CR"
    NVM_DIR="$(brew --prefix nvm)"
    
    echo """$CR""Using nvm install node...$CR"
    echo "++ nvm install $NODE_VER_TO_INSTALL"
    nvm install $NODE_VER_TO_INSTALL
    NODE_BINARY_PATH="`find /usr/local/Cellar/nvm -name node -type d|head -n 1`/$NODE_VER_TO_INSTALL/bin"
    echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc) and then restart your shell:$CR$OFF"
    echo "export PATH=\$PATH:$NODE_BINARY_PATH:$HOME/.node/bin"
    
    echo """$CR""Upgrading npm...$CR"
    echo '++ install -g npm@latest'
    npm install -g npm@latest
    { set +x; } &>/dev/null
    echo "$REV""$CR""Insert following line in your $HOME/.npmrc file:$OFF"
    echo """$CR""prefix=$HOME/.node$CR"
    echo "Now, all is likley well if you can run the following without errors:  npm install -g grunt-cli$CR"
    echo "Other recommended global installs: bower, gulp, yo, node-inspector$CR"
    

    I wrote a short article here that details why this is "the right way".

    If you need to install iojs, do so using nvm like this:

    nvm install iojs-v1.7.1
    

    To install brew, just see its home page.

    See alexpods answer for the rest.

提交回复
热议问题