Установите NPM в домашний каталог с пакетом дистрибутива nodejs (Ubuntu)



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



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




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



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

621   7  

7 ответов:

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

установите Nodejs и NPM через chris-lea PPA. Затем я настроил корень пакета в моем homedir для хранения узла "глобальные" пакеты:

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

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

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

настройте свой путь и 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 как обычно:

[justjake@marathon:~] $ 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

[justjake@marathon:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee

ответ Джейка был опубликован в 2012 году, и хотя он полезен, он ссылается на узел Криса Ли.JS PPAs, которые больше не обновляются с марта 2015 года.

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

Установить Узел.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/

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

Установить Узел.js

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

    curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  • узел.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 и без возиться с системными файлами.

решение, опубликованное Just Jake, отлично. Однако из-за ошибки с npm > 1.4.10 он может работать не так, как ожидалось. (См.этой и этой)

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

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

потому что python уже делает большую работу virtualenv, Я использую nodeenv. По сравнению с nvm, вы можете создать несколько сред для одной и той же версии узла (например, две среды для узла 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's node into virtualenv
nodeenv --node=system --python-virtualenv

readme довольно хорошо: https://github.com/ekalinin/nodeenv

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

на Ubuntu 14.04 или 16.04:

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

    sudo apt-get update
    sudo apt-get install build-essential libssl-dev
    
  2. установить nvm:

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

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

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

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

    использовать nvm ls-remote в список nodejs версий.

    установить, например, nodejs В4.2.4 делать:

    # 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
    

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

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

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

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

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

Comments

    Ничего не найдено.