NPM /自耕农安装发电机 - 角而不须藤NPM /自耕农安装发电机 - 角而不须藤(npm / y

2019-05-08 17:56发布

我试图安装使用哟(发电机angularjs Yoeman 没有sudo):

npm install -g generator-angular

我得到:

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

当我输入sudo yo ,哟告诉我,我不应该使用sudo(这是完全可以理解的)。

我有一个~/node_modules目录-为什么不哟安装其包呢?

Answer 1:

发电机设计为全球的装机量。 否则,你总是要安装你准备在每个项目中,这是不必要的痛苦的使用发电机。 此外,你不会看到可爱yo菜单,列出了所有可用的发电机(当然,除非你安装它们所有本地):

建立NPM全球安装

那么,我们怎么NPM在全球范围内安装包? 正如你说正确的,你应该永远,永远跑yo使用sudo。 有很多不同的解决方案这个问题,你可以花时间讨论其利弊宗教。

我个人不喜欢我的安装包的用户全球 /usr/文件夹。 /usr/是是所有用户共享的计算机上的软件。 即使是只使用本机,还有尊重Unix文件系统层次结构的设计方式很好的理由。 例如,如果你在一个点决定为你擦去整个节点的安装。

我首选的实现方式npm在全球范围内安装软件包无突破$HOME是用来设置本地节点的前缀 。 这是跑步一样简单

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

在当地壳。 在这之后,你要调整你的$ PATH,通过调整自己喜欢的外壳的配置,以指向新的安装目标为全球节点可执行文件。 加入EG

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

~/.bashrc 。 在此之后,你可以愉快地运行npm install -g generator-angular没有sudo,而不会遇到权限冲突,如果发生被彻底打破了,你想从头开始,所有你需要做的就是删除您的~/.node目录。



Answer 2:

由于@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


Answer 3:

喜在我的情况(在Ubuntu 12.04),前缀除了在〜/ .npmrc没有改变任何东西。

如果是的话,自己建的节点包,并在/ opt /节点或/home/user/.node安装。



Answer 4:

我有涉及流氓几乎相同的错误.yo-rc.json从我前面安装了一个项目,我的根目录下的文件。 约曼是从安装目录切换CWD根通过安装目录的一半,但只输出EACCESS权限错误,没有任何细节,安装目录为/ 。 它经历了千百年来弄清楚这是为什么,并通过约曼源参与调试,但我最终了解到,约曼将查找在目录树,直到它找到一个.yo-rc.json ,并生成代码有通过调用CHDIR到新的位置。

约曼也许应该检查该用户对目录写权限。 或者,也可以在输出提任了CWD发生了变化,或打印安装目录的名称,如果在那里发现.yo-rc.json比CWD不同。

寻找流氓.yo-rc.json文件的命令

sudo find / -name .yo-rc.json



Answer 5:

从yoeman入门页面显示的命令:

yo doctor

在我的情况下,$ NODE_PATH(这在我的情况下,Ubuntu的14.04,在/etc/profile.d中定义)不大于NPM根相同。 添加在$ NODE_PATH NPM根本上解决问题。



Answer 6:

我一直在试图让yeoman发挥好我的vagrant框,这是我必须做的安装npm全球包,而sudoubuntu

1.创建一个用于存储全球软件包的目录

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

2.告知npm在那里把全球安装的软件包

插入此片段到你的~/.npmrc文件:

prefix=${HOME}/.npm-packages

3.确保npm可以找到安装的binaries等等

插入此片段到您.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

希望这有助于人谁发现自己处于类似的情况。



文章来源: npm / yeoman install generator-angular without sudo