Ответ 1
Через небольшое исследование, похоже, вы можете:
- установите
NODE_PATH
в любой корневой каталог npm или - в node, вызовите
require.paths.push('path_to_npm_root')
Установка npm в качестве корневого пользователя является несходным и работоспособным. Кроме того, вы должны запускать команды npm как root (не рекомендуется). Поэтому я подумал, что попробую настроить его как пользователя без полномочий root.
Согласно документации npm, пользователь без полномочий root без root-доступа может установить npm с помощью:
.npmrc
с root
, binroot
и manroot
, указывающим на папки, которыми владеет пользователь.OK. Установка была прекрасной.
Но node не может видеть пакеты, предоставленные npm.
Итак, как мне сделать node осведомленным о пакетах, предоставляемых npm? (Я не должен был ничего делать, когда ранее устанавливал npm как root).
Я могу установить require.paths
внутри node или установить переменную среды NODE_PATH
, но на что?
Спасибо.
Через небольшое исследование, похоже, вы можете:
NODE_PATH
в любой корневой каталог npm илиrequire.paths.push('path_to_npm_root')
Это сработало для меня:
Создайте папку ~/.node
mkdir ~/.node
Измените ~/.npmrc
и добавьте строку
prefix = ~/.node
Отредактируйте ~/.profile
или ~/.bash_profile
и добавьте эти строки
PATH="$HOME/.node/bin:$PATH"
NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH"
Теперь я могу делать такие вещи, как npm -g install http-server
, и он будет установлен на ~/.node
без root. При этом на месте, когда я тогда набираю http-server
, он запускается.