Npm command - sudo или нет?

В настоящее время я всегда запускаю sudo npm install <package-name>, но, как я понимаю, это неверно.

Я хочу иметь возможность не использовать его как root/Administrator. Я последовал советам и использовал эту команду sudo chown -R <username> ~/.npm, но это не сработает...

например, это вывод моего npm install jade

...
npm http 200 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm ERR! Error: EACCES, symlink '../jade/bin/jade'
npm ERR!  { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

как вы видите, загрузка началась успешно, но затем не удалось.

Мне интересно, что является лучшим способом запретить sudo на npm?

Ответ 1

Это возможно (и желательно) для модулей npm install -g node без sudo.

Проверьте разрешение вашей папки /usr/local/share/npm/bin. Я установил node и npm через brew (без sudo), и эта конкретная папка оказалась принадлежащей root.

Это фиксировало его раз и навсегда:

$ sudo chown $(whoami) /usr/local/share/npm/bin

(Что касается отказа sudo с npm: вам нужно будет настроить npm для этого. В вашем собственном коде node можно использовать https://npmjs.org/package/sudo-block, npm install sudo-block)

Ответ 2

По-моему, самый чистый способ указать префикс npm:

npm config set prefix ~/.node_modules

Затем добавьте следующее:.bash_profile

export PATH=$HOME/.node_modules/bin:$PATH

Теперь пакеты будут установлены в ваш каталог пользователя, и никакие разрешения не будут повреждены.


EDIT: если вы не можете установить yeoman, создайте файл bash в одном из ваших каталогов PATH с именем yodoctor со следующим содержимым

#!/bin/bash
yo doctor

Сделайте исполняемый файл с помощью

chmod +x yodoctor

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

Ответ 3

Вы также можете сделать:

sudo chown -R $USER /usr/local

и рекурсивно изменить файлы на текущего пользователя.

Ответ 4

Я нашел, что это лучшее решение

sudo chown -R $USER /Users/$USER

Это просто изменит владельца вашего пользователя, а npm должен быть установлен под вашим пользователем на OS X. Все, что я читал, говорит, что sudo для установки npm является плохим, и я должен согласиться с ними, когда вы откроете себя для вредоносных скриптов.

Ответ 5

Два предлагаемых здесь решения - это не то, что я бы рекомендовал, потому что они являются решениями грубой силы. Вместо этого я рекомендую читать Один не просто sudo npm