Подтвердить что ты не робот

Установите NPM в домашнюю директорию с дистрибутивным узлом nodejs (Ubuntu)

Я хотел бы использовать дистрибутивы Node.js(или chris-lea ppa для более поздних версий), но установите NPM в мой домашний каталог,

Это может показаться разборчивым, но это довольно идиоматический способ для разработчиков polyglot/github для установки языковых сред выполнения/библиотек в Linux: дистрибутивные пакеты для среды выполнения, сторонние библиотеки в среде для каждого пользователя (см. virtualenv, RVM - RVM также будет строить Ruby для вас, если вы хотите). При необходимости я буду строить node локально, но это PITA, поскольку node становится случайным требованием к разработке для большого количества проектов.

Вторая ссылка кажется, что она может работать с дистрибутивными узлами nodejs, но кажется довольно отрывочной.

Обновить этот паст подводит итог второй ссылке выше, но не работает для меня (кажется, что npm игнорирует ~/. npmrc, по крайней мере во время установки).

4b9b3361

Ответ 1

NPM уже установит локальные пакеты в ваши проекты, но мне все равно нравится держать систему в стороне от файлов моей операционной системы. Вот как я предлагаю разделять пакеты Nodejs:

Установите Nodejs и NPM через PPA chris-lea. Затем я установил корневой пакет в моем homedir для хранения пакетов Node "global":

 $ NPM_PACKAGES="$HOME/.npm-packages"
 $ mkdir -p "$NPM_PACKAGES"

Установите NPM для использования этого каталога для его глобальных пакетов:

 $ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc

Настройте PATH и MANPATH, чтобы увидеть команды в префиксе $NPM_PACKAGES, добавив следующее к вашему .zshrc/.bashrc:

# NPM packages in homedir
NPM_PACKAGES="$HOME/.npm-packages"

# Tell our environment about user-installed node tools
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath` command
unset MANPATH  # delete if you already modified MANPATH elsewhere in your configuration
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

# Tell Node about these packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

Теперь, когда вы выполняете npm install -g, NPM будет устанавливать библиотеки в ~/.npm-packages/lib/node_modules и связывать исполняемые инструменты в ~/.npm-packages/bin, который находится в вашем PATH.

Просто используйте npm install -g, как обычно:

[[email protected]:~] $ npm install -g coffee-script
... (npm downloads stuff) ...
/home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee
/home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake
[email protected] /home/justjake/.npm-packages/lib/node_modules/coffee-script

[[email protected]:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee

Ответ 2

Ответ Джейка был опубликован в 2012 году, и, хотя он полезен, он ссылается на Chris Lea Node.js PPA, которые больше не обновляются с марта 2015 года.

Вот шаги, которые я использую для установки Node.js и npm в моем домашнем каталоге:

Установите Node.js с nvm (не требуется sudo):

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
source ~/.bashrc
nvm install 7
npm install -g npm  # update npm

Теперь вы можете install -g без sudo, и все идет в ~/.nvm/

Или установите Node.js без nvm (официальные инструкции):

Установить Node.js

  • Node.js v6 (текущий LTS по состоянию на май 2017 года):

    curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  • Node.js v7:

    curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

Изменить каталог по умолчанию npm на локальный:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH="$HOME/.npm-global/bin:$PATH"  # ← put this line in .bashrc
source ~/.bashrc  # if you only updated .bashrc

Альтернативно замените .npm-global на каталог по вашему выбору.

Обновить npm и проверить, что он установлен в вашем каталоге $HOME:

$ npm install npm -g
/home/<username>/.npm-global/bin/npm -> /home/<username>/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/<username>/.npm-global/lib
└─┬ [email protected] 
  ├─┬ [email protected] 
  │ └── [email protected] 
  ├── [email protected] 
  └── [email protected] 

Теперь вы можете install -g без sudo и не вмешиваться в системные файлы.

Ответ 3

Решение, размещенное Just Jake, замечательно. Однако из-за ошибки с npm > 1.4.10 он может работать не так, как ожидалось. (Смотрите this и this)

Пока ошибка решена, вы можете перейти на npm 1.4.10, выполнив следующие шаги:

  • Прокомментируйте строку префикса в $HOME/.npmrc
  • Выполнить sudo npm install -g [email protected]
  • Убедитесь, что установлена ​​правильная версия npm (npm --version)
  • Раскомментируйте строку префикса в $HOME/.npmrc
  • Приступайте к установке глобальных пакетов в домашнюю папку!

Ответ 4

Поскольку python делает отличную работу virtualenv, я использую nodeenv. По сравнению с nvm вы можете создать несколько сред для той же версии node (например, две среды для node 0.10, но с разными наборами пакетов).

ENVNAME=dev1

#  create an environment
python -m virtualenv ${ENVNAME}

# switch to the newly created env
source ${ENVNAME}/bin/activate

# install nodeenv
pip install nodeenv

# install system node into virtualenv
nodeenv --node=system --python-virtualenv

Чтение довольно хорошее: https://github.com/ekalinin/nodeenv

Ответ 5

Я использовал @just-jake решение в течение некоторого времени и обнаружил, что nvm проще настроить. Также это очень мощное решение, которое позволяет устанавливать и использовать разные версии nodejs.

В Ubuntu 14.04 или 16.04:

  • Установите необходимые пакеты для построения nodejs:

    sudo apt-get update
    sudo apt-get install build-essential libssl-dev
    
  • Установите nvm:

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

    В случае, если будет доступна новая версия nvm, вы можете найти фактическую команду установки на nvm сайте.

  • nvm установщик добавит bootstrap script в ~/.bashrc, поэтому вам нужно либо открыть терминал для его запуска, либо сделать:

    source ~/.bashrc
    
  • Теперь вы можете установить любую версию nodejs, которая вам нравится, переключиться между ними и т.д.

    Используйте nvm ls-remote, чтобы просмотреть доступные версии nodejs.

    Чтобы установить, например, nodejs v4.2.4 do:

    # install v4.2.4
    nvm install v4.2.4 
    # use nodejs v4.2.4 in the current terminal session
    nvm use v4.2.4
    # use v4.2.4 by default in new terminal session
    nvm alias default v4.2.4
    

Ответ 6

Чтобы расширить ответ, предоставленный Just Jake и user1533401: я не могу понизить, поскольку я использую общий хостинг, а node установлен в системном каталоге. Вот почему я меняю каталог, в котором npm устанавливает глобальные скрипты, если я хочу, чтобы он это сделал. Для тех, кто в одной лодке, вот еще одно временное исправление, которое я нашел:

npm install -g --prefix=$(npm config get prefix) <package>

Ошибка в том, что npm не читает ваш конфигурационный файл для каждого пользователя, но указывая его каждый раз, когда вы устанавливаете глобальные исправления script. Найдено здесь.

Ответ 7

Как уже говорилось здесь и здесь

npm config set prefix ~
echo export PATH=\$PATH:\~/bin >> ~/.bashrc
. ~/.bashrc