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