Как настроить npm (node диспетчер пакетов) без доступа root?

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

Согласно документации npm, пользователь без полномочий root без root-доступа может установить npm с помощью:

  • создание файла .npmrc с root, binroot и manroot, указывающим на папки, которыми владеет пользователь.
  • Затем запустите установку script.

OK. Установка была прекрасной.

Но node не может видеть пакеты, предоставленные npm.

Итак, как мне сделать node осведомленным о пакетах, предоставляемых npm? (Я не должен был ничего делать, когда ранее устанавливал npm как root). Я могу установить require.paths внутри node или установить переменную среды NODE_PATH, но на что?

Спасибо.

Ответ 1

Через небольшое исследование, похоже, вы можете:

  • установите NODE_PATH в любой корневой каталог npm или
  • в node, вызовите require.paths.push('path_to_npm_root')

Ответ 2

Это сработало для меня:

  • Создайте папку ~/.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, он запускается.