npm / yoman установить генератор-угловой без sudo

Я попытался установить генератор-угловые с помощью Yo ( Yoeman ) без sudo :

npm install -g generator-angular 

Я получил:

 Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular' 

Когда я sudo yo , yo говорит мне, что я не должен использовать sudo (что совершенно понятно).

У меня есть каталог ~/node_modules – почему вы не устанавливаете там свои пакеты?

    Генераторы предназначены для установки в глобальном масштабе. В противном случае вам всегда нужно установить генератор, который вы собираетесь использовать в каждом проекте, что излишне болезненно. Кроме того, вы не можете увидеть прекрасное yo меню, в котором перечислены все доступные генераторы (если, конечно, вы не установите их локально):

    Эй

    Настройка npm для глобальной установки

    Итак, как нам получить npm для установки пакетов по всему миру? Как вы правильно сказали, вы никогда не должны когда-либо бегать yo с судо. Существует множество различных решений этой проблемы, и вы можете часами обсуждать свои плюсы и минусы религиозно.

    Мне лично не нравится устанавливать мои пользовательские пакеты в глобальную /usr/ папку. /usr/ предназначен для программного обеспечения, которое доступно для всех пользователей на компьютере. Даже если он работает только с машиной, все еще есть веские причины уважать то, как разрабатывается иерархия файловой системы Unix. Например, если вы решите в какой-то момент стереть всю установку узла.

    Мой предпочтительный способ включения npm для установки пакетов по всему миру без выхода из $HOME – установить префикс локального узла . Это так же просто, как бег

     echo 'prefix = ~/.node' >> ~/.npmrc 

    в вашей локальной оболочке. После этого вы хотите настроить $ PATH, чтобы указать на новый пункт назначения для исполняемых файлов глобального узла, настроив конфигурацию вашей любимой оболочки. Например, добавив

     export PATH="$PATH:$HOME/.node/bin" 

    к вашему ~/.bashrc . После этого вы можете с радостью запустить npm install -g generator-angular без sudo, не запуская конфликтов разрешений, и если что-то полностью сломано, и вы хотите начать с нуля, все, что вам нужно сделать, это удалить каталог ~/.node .

    Благодаря @passy мне удалось наконец заставить это работать на ubuntu 13.04 (в случае, если у кого-то возникают подобные проблемы с настройкой) со следующим:

     sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs 

    пытаясь запустить:

     npm install -g yo 

    привело к

     Error: EACCES, mkdir '/usr/lib/node_modules/yo' 

    Исправлено:

     echo prefix = ~/.node >> ~/.npmrc echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc . ~/.bashrc 

    Бег:

     yo webapp 

    привели к:

     Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml' 

    Исправлено:

     sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml 

    привет в моем случае (по ubuntu 12.04), добавление префикса в ~ / .npmrc ничего не изменило.

    если это так, создайте пакет узла самостоятельно и установите его в / opt / node или /home/user/.node .

    У меня была почти идентичная ошибка с участием файла .yo-rc.json в корневой директории из проекта, который я установил ранее. Йомен переводил cdd из установочного каталога в корневую директорию на полпути через установку, но только выводил ошибку разрешений EACCESS без каких-либо подробностей, которые был в каталоге установки / . Потребовалось много времени, чтобы понять, почему это было, и задействовать отладку через источник Йомен, но я в конце концов узнал, что Йомен будет искать дерево каталогов, пока не найдет .yo-rc.json , и сгенерирует там код, вызвав chdir на новое место.

    Возможно, Йомен должен проверить, что у пользователя есть права на запись для каталога. В качестве альтернативы, на выходе можно указать, что cwd изменился, или распечатать имя каталога установки, если он находит .yo-rc.json отличается от cwd.

    Команда для поиска файлов rougue .yo-rc.json

    sudo find / -name .yo-rc.json

    Начиная с первой страницы запускается команда:

     yo doctor 

    В моем случае $ NODE_PATH (который в моем случае, Ubuntu 14.04, определен в файле /etc/profile.d) не совпадает с npm root. Добавление в npm root в $ NODE_PATH решает проблему.

    Я пытаюсь заставить yeoman играть хорошо с моей vagrant коробкой, и это то, что мне нужно было сделать, чтобы установить пакеты npm всему миру без sudo на ubuntu :

    1. Создайте каталог для хранения глобальных пакетов.

    $ mkdir "${HOME}/.npm-packages"

    2. Скажите npm куда поместить любые пакеты, установленные глобально

    Вставьте этот fragment в файл ~/.npmrc :

    prefix=${HOME}/.npm-packages

    3. Убедитесь, что npm может найти установленные binaries и так далее.

    Вставьте этот fragment в свой .bashrc/.zshrc :

     NPM_PACKAGES="${HOME}/.npm-packages" PATH="$NPM_PACKAGES/bin:$PATH" // `unset` `manpath` to allow inheritance from `/etc/manpath` with // the `manpath` command unset MANPATH // remove this line if you have previously modified `manpath` export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" 

    4. Запустить следующий или перезапустить терминал

    $ source ~/.bashrc

    Надеюсь, это поможет любому, кто окажется в подобной ситуации.

    Interesting Posts

    Разделить сервер и клиент API REST JSON?

    Поиск последовательной битовой строки 1 или 0

    Как остановить Entity Framework от попыток сохранить / вставить дочерние объекты?

    Производительность массивов против списков

    Как включить динамический массив INSIDE a struct в C?

    Как конкатенировать текст из нескольких строк в одну текстовую строку на SQL-сервере?

    Как создать проект библиотеки в Android Studio и проект приложения, который использует проект библиотеки

    Как получить программный IP-адрес локальной сети компьютера? (С #)

    Поддерживает ли Linux TRIM для SSD на LVM?

    Как оценить вероятность столкновения hashей?

    Не удается подключиться к сети

    Почему я получаю одну и ту же последовательность для каждого запуска с помощью std :: random_device с mingw gcc4.8.1?

    Поисковая система Google «Я чувствую себя счастливой» Google на Chromium

    Как установить PyQt4 в anaconda?

    Как распечатать с помощью таблицы стилей экрана?

    Давайте будем гением компьютера.