Установите NPM в домашний каталог с пакетом дистрибутива nodejs (Ubuntu)
Я хотел бы использовать узел распределения.пакеты js (или chris-lea ppa для более поздних версий), но установите NPM в мой домашний каталог.
Это может показаться придирчивым, но это довольно идиоматичный способ для разработчиков polyglot/github-использование для настройки среды выполнения языка/библиотеки под Linux: дистрибутивы для среды выполнения, сторонние библиотеки в среде для каждого пользователя (см. virtualenv, RVM-RVM также построит Ruby для вас, если вы хотите). При необходимости я сделаю это сборка узла локально, но это Пита, так как узел становится случайным требованием разработки для многих проектов.
вторая ссылка кажется, что она может работать с пакетами дистрибутива nodejs, но она кажется довольно отрывочной.
обновлениеэто вставить подводит итог второй ссылке выше, но не работает для меня (похоже, npm игнорирует ~/.npmrc, по крайней мере во время установки).
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 npminstall -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, выполнив следующие действия:
- прокомментируйте строку префикса в вашем $HOME/.npmrc
- выполнить
sudo npm install -g [email protected]- убедитесь, что установлена правильная версия npm (
npm --version)- раскомментируйте префикс линия в вашем $HOME/.npmrc
- приступайте к установке глобальных пакетов в домашнюю папку!.
потому что 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-virtualenvreadme довольно хорошо: https://github.com/ekalinin/nodeenv
я использовал @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установщик добавит скрипт начальной загрузки в~/.bashrc, поэтому вам нужно либо снова открыть терминал, чтобы запустить его, либо сделать:source ~/.bashrcтеперь вы можете установить любое
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 не читает ваш файл конфигурации для каждого пользователя, но указывает его каждый раз при установке глобальный скрипт исправляет это. Нашел здесь.
Comments