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

后端 未结 9 1180
佛祖请我去吃肉
佛祖请我去吃肉 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:27

    I agree with noa -- if you need to have multiple versions of node, io.js then brew is not the appropriate solution.

    You can help beta-test io.js support in nvm: https://github.com/creationix/nvm/pull/616

    If you just want io.js and are not switching versions, then you can install the binary distribution of io.js from https://iojs.org/dist/v1.0.2/iojs-v1.0.2-darwin-x64.tar.gz ; that includes npm and you will not need nvm if you are not switching versions.

    Remember to update npm after installing: sudo npm install -g npm@latest

    0 讨论(0)
  • 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 <NODE_VERSION_TO_INSALL>"
        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.

    0 讨论(0)
  • 2020-11-30 16:31

    I'm super late to this but I didn't like the other answers

    Installing Homebrew

    For brew run

    "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    Installing node & npm

    You SHOULD NOT use brew to install node and npm.

    I've seen a few places suggested that you should use Homebrew to install Node (like alexpods answer and in this Team Treehouse blog Post) but installing this way you're more prone to run into issues as npm and brew are both package managers and you should have a package manager manage another package manager this leads to problems, like this bug offical npm issues Error: Refusing to delete: /usr/local/bin/npm or this Can't uninstall npm module on OSX

    You can read more on the topic in DanHerbert's post Fixing npm On Mac OS X for Homebrew Users, where he goes on to say

    Also, using the Homebrew installation of npm will require you to use sudo when installing global packages. Since one of the core ideas behind Homebrew is that apps can be installed without giving them root access, this is a bad idea.

    For Everything else

    I'd use npm; but you really should just follow the install instruction for each modules following the directions on there website as they will be more aware of any issue or bug they have than anyone else

    0 讨论(0)
  • 2020-11-30 16:37

    For install with zsh and Homebrew:

    brew install nvm
    

    Then Add the following to ~/.zshrc or your desired shell configuration file:

    export NVM_DIR="$HOME/.nvm"
    . "/usr/local/opt/nvm/nvm.sh"
    

    Then install a node version and use it.

    nvm install 7.10.1
    nvm use 7.10.1
    
    0 讨论(0)
  • 2020-11-30 16:40

    I'm using n (Node version management)

    You can install it in two ways

    brew install n
    

    or

    npm install -g n
    

    You can switch between different version of node and io. Here's an example from my current env when I call n without params:

    $ n
    
      io/3.3.1
      node/0.12.7
      node/4.0.0
      node/5.0.0
    ο node/5.10.1 
    
    0 讨论(0)
  • 2020-11-30 16:42
    1. Using homebrew install nvm:

      brew update
      brew install nvm
      source $(brew --prefix nvm)/nvm.sh
      

      Add the last command to the .profile, .bashrc or .zshrc file to not run it again on every terminal start. So for example to add it to the .profile run:

      echo "source $(brew --prefix nvm)/nvm.sh" >> ~/.profile
      

      If you have trouble with installing nvm using brew you can install it manually (see here)

    2. Using nvm install node or iojs (you can install any version you want):

      nvm install 0.10
      # or
      nvm install iojs-1.2.0
      
    3. npm is shipping with node (or iojs), so it will be available after installing node (or iojs). You may want to upgrade it to the latest version:

      $ npm install -g npm@latest
      

      UPD Previous version was npm update -g npm. Thanks to @Metallica for pointing to the correct way (look at the comment bellow).

    4. Using npm install ionic:

      npm install -g ionic
      
    5. What about ngCordova: you can install it using npm or bower. I don't know what variant is more fit for you, it depends on the package manager you want to use for the client side. So I'll describe them both:

      1. Using npm: Go to your project folder and install ng-cordova in it:

        npm install --save ng-cordova
        
      2. Using bower: Install bower:

         npm install -g bower
        

        And then go to your project folder and install ngCordova in it:

         bower install --save ngCordova
        

    PS

    1. Some commands may require superuser privilege
    2. Short variant of npm install some_module is npm i some_module
    0 讨论(0)
提交回复
热议问题