Каков рекомендуемый способ установки brew, node.js, io.js, nvm, npm на OS X?

175

Я стараюсь использовать доморощенный как можно больше. Какой предлагаемый способ установить следующее на OS X?

и, надеюсь, поддерживает разработку для:

ohho
источник
9
Следует отметить, что хотя вы просили использовать доморощенный. Использование homebrew для установки nvm не рекомендуется. От github.com/creationix/nvm "Установка Homebrew не поддерживается. Если у вас есть проблемы с nvm, установленным с homebrew, пожалуйста, удалите brew и установите его, следуя приведенным ниже инструкциям, прежде чем сообщать о проблеме. «.
Эрик

Ответы:

267
  1. Используя homebrewinstall nvm:

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

    Добавьте последнюю команду в файл .profile, .bashrcили, .zshrcчтобы не запускать ее снова при каждом запуске терминала. Так, например, чтобы добавить его в .profileпрогон:

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

    Если у вас возникли проблемы с установкой с nvmпомощью brewвы можете установить его вручную (см здесь )

  2. Используя nvminstall nodeили iojs(вы можете установить любую версию по вашему желанию):

    nvm install 0.10
    # or
    nvm install iojs-1.2.0
  3. npmпоставляется с node(или iojs), поэтому он будет доступен после установки node(или iojs). Вы можете обновить его до последней версии:

    $ npm install -g npm@latest

    UPD Предыдущая версия была npm update -g npm. Спасибо @Metallica за указание на правильный путь (посмотрите на комментарий ниже).

  4. Используя npminstall ionic:

    npm install -g ionic
  5. Как насчет ngCordova: вы можете установить его с помощью npmили bower. Я не знаю, какой вариант больше подходит для вас, это зависит от менеджера пакетов, который вы хотите использовать на стороне клиента. Поэтому я опишу их обоих:

    1. Использованиеnpm : перейдите в папку вашего проекта и установите ng-cordovaв нее:

      npm install --save ng-cordova
    2. Использованиеbower : Установить беседку:

       npm install -g bower

      А затем перейдите в папку вашего проекта и установите ngCordovaв нее:

       bower install --save ngCordova

PS

  1. Некоторые команды могут требовать привилегий суперпользователя
  2. Короткий вариант npm install some_moduleISnpm i some_module
alexpods
источник
10
Если вы обновляете сам npm, НЕ используйте команду обновления npm. Рекомендованный апстрим способ обновления npm: npm install -g npm@latestbrew info nodeи здесь )
Джавад Садекзаде
10
Из текущей установки brew nvm: «Обратите внимание, что апстрим попросил нас сделать явное управление nvm через Homebrew, которое они не поддерживают ...» -> Поэтому, вероятно, правильный ответ - не использовать brew для nvm / node.js / io .js.
s.Daniel
7
Я получаю сообщение об ошибке «nvm не совместим с параметром префикса конфигурации npm». Согласно этому сайту ( github.com/creationix/nvm/issues/855#issue-109279804 ), NVM не совместим с Homebrew. Я "заварил удаленный nvm" и установил nvm через команду CURL, и теперь сообщение об ошибке исчезло.
YeeHaw1234
4
Некоторое время я использовал nvm через brew, но тоже получил сообщение «upstream ... явный ... неподдерживаемый». В документации NVM прямо сказано: «Установка Homebrew не поддерживается. Если у вас есть проблемы с установленным homebrew nvm, пожалуйста, удалите brew и установите его, следуя приведенным ниже инструкциям, прежде чем сообщать о проблеме». Так что это, вероятно, не должно быть принятым ответом больше. Я только начал использовать, который работает.
Whatsthatitspat
3
Текущая версия NVM (v0.33.2) НЕ поддерживает установку homebrew: См. Github.com/creationix/nvm/tree/v0.33.2#installation
Андреа Карраро,
45

Обновление 2019: используйте NVM для установки узла, а не Homebrew

В большинстве ответов рекомендуемый способ установки nvm - использовать Homebrew

Не делай этого

На Github Page для nvm это ясно вызвано:

Homebrew установка не поддерживается. Если у вас есть проблемы с установленным в homebrew nvm, пожалуйста, удалите brew и установите его, следуя приведенным ниже инструкциям, перед тем, как сообщать о проблеме.

Вместо этого используйте следующий метод

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Сценарий клонирует репозиторий nvm в ~ / .nvm и добавляет исходную строку в ваш профиль (~ / .bash_profile, ~ / .zshrc, ~ / .profile или ~ / .bashrc).

А затем используйте nvm для установки узла. Например, чтобы установить последнюю версию LTS, выполните:

nvm install v8.11.1

Чистый и без проблем. Это пометит это как версию вашего узла по умолчанию, так что вы должны быть полностью настроены

Абхиджит Мазумдер
источник
2
Я думаю, что вы также nvm install --ltsможете получить последний LTS
skube
1
Спасибо, что подняли это, я спустился в ужасную кроличью нору с nvm и homebrew и только что появился ...
cssidy
Хороший ответ! После большого чтения (установка узлов может быть минным полем), я просто сварил неустановленный узел, вычистил все и использовал nvm для установки узла в Мохаве 10.14.4: stackoverflow.com/q/55735701/123033
Дейв Эверитт
13

Я использую (Node version management)

Вы можете установить его двумя способами

brew install n

или

npm install -g n

Вы можете переключаться между разными версиями узла и io. Вот пример из моего текущего env, когда я вызываю n без параметров:

$ n

  io/3.3.1
  node/0.12.7
  node/4.0.0
  node/5.0.0
ο node/5.10.1 
Серж Селецкий
источник
2
Вы можете добавить третий способ установки, который безболезнен и оставляет удобную утилиту удаления, если вам это нужно - github.com/mklement0/n-install. Этот метод предлагается в n документах на github.com/tj/n
whatsthatitspat
1
Также следует отметить, что если вы планируете запускать разные версии узлов для разных проектов одновременно (как в 2 разных оконных окнах), то nvm - лучший выбор, поскольку он переключает только пути к узлу в каждом сеансе.
Ниллок
10

Я очень опоздал на это, но мне не понравились другие ответы

Установка Homebrew

Для заварной перспективы

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

Установка узла & npm

Вы НЕ ДОЛЖНЫ использовать brewдля установки узла и npm .

Я видел несколько мест , предполагается , что вы должны использовать Homebrew для установки узла (например , alexpods ответ и в этом Team Treehouse в блоге Опубликовать ) , но установка так вы более склонны впадать в вопросах , как npmи brewоба менеджеры пакетов , и вы должны если менеджер пакетов управляет другим менеджером пакетов, это приводит к проблемам, таким как эта ошибка. Официальные проблемы с npm. Ошибка: отказ от удаления: / usr / local / bin / npm или это не удается удалить модуль npm в OSX

Вы можете прочитать больше на эту тему в посте ДанХерберта « Исправление npm в Mac OS X для домашних пользователей» , где он продолжает:

Кроме того, при установке Homebrew npm вам потребуется использовать sudo при установке глобальных пакетов. Поскольку одна из основных идей Homebrew заключается в том, что приложения могут быть установлены без предоставления им корневого доступа, это плохая идея.

Для всего остального

Я бы использовал npm; но вы действительно должны просто следовать инструкции по установке для каждого модуля, следуя инструкциям на веб-сайте, так как они будут более осведомлены о любой проблеме или ошибке, чем кто-либо другой

garrettmac
источник
Так вы предлагаете просто установить его с их загрузки?
Шон Маклин,
6

Если вы ранее установили узел с помощью brew, то у вас будет куча дополнительных файлов, которые вы должны очистить перед установкой узла «правильным способом». Кроме того, мне пришлось добавить несколько настроек в мой скрипт запуска, чтобы все работало гладко.

Я написал сценарий, чтобы сделать это легко.

# 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"

Я написал небольшую статью здесь , что детали , почему это «правильный путь».

Если вам нужно установить iojs, сделайте это с помощью nvm следующим образом:

nvm install iojs-v1.7.1

Чтобы установить brew, просто посмотрите его домашнюю страницу .

Смотрите alexpods ответ на все остальное.

L3x
источник
5
Удивительно видеть, что все эти менеджеры пакетов и менеджеры версий действительно помогают удалять пользовательские сценарии, хаки и обходные пути, чтобы заставить techstack xyz работать. здорово.
Майкл Трау,
Работал на меня, хотя я начинал с npm и варил оба без порции
Крис Ф. Кэрролл
5

Вам следует установить node.js с помощью nvm, потому что таким образом вам не нужно предоставлять привилегии суперпользователя при установке глобальных пакетов (вы можете просто выполнить «npm install -g packagename», не добавляя «sudo»).

Однако варево отлично подходит для других вещей. Я склонен склоняться к Бауэру всякий раз, когда у меня есть возможность установить что-то с Бауэром.

Раджан Патель
источник
Установка узла с использованием nvm теперь является моим предпочтительным подходом. По очевидной причине возможности иметь несколько версий узла на моей машине, а также мне не нужно выполнять npm с помощью sudo. Я написал сообщение в блоге garywoodfine.com/install-nodejs-nvm-osx, объясняющее, как установить
Гэри Вудфайн
4

Я согласен с noa - если вам нужно иметь несколько версий node, io.jsто brew не является подходящим решением.

Вы можете помочь в поддержке бета-тестирования io.jsв nvm: https://github.com/creationix/nvm/pull/616

Если вы просто хотите io.jsи не переключаете версии, вы можете установить бинарный дистрибутив io.jsиз https://iojs.org/dist/v1.0.2/iojs-v1.0.2-darwin-x64.tar.gz ; это включает npmи вам не понадобитсяnvm если вы не переключаете версии.

Не забудьте обновить npmпосле установки:sudo npm install -g npm@latest

Сэм Майкс
источник
3

Вот что я делаю:

curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
cd / && . ~/.nvm/nvm.sh && nvm install 0.10.35
. ~/.nvm/nvm.sh && nvm alias default 0.10.35

Нет доморощенного для этого.

nvmскоро будет поддерживать io.js, но не на момент публикации: https://github.com/creationix/nvm/issues/590

Затем установите все остальное, для каждого проекта, с помощью package.jsonи npm install.

paulmelnikow
источник
0

Для установки с Zsh и Homebrew:

brew install nvm

Затем добавьте следующее в ~ / .zshrc или в нужный файл конфигурации оболочки:

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

Затем установите версию узла и используйте ее.

nvm install 7.10.1
nvm use 7.10.1
Дэвид Дехган
источник