我在一个没有根访问权限的unix设备上.

我改变了主意.npmrc文件(在我用户的根目录中)到:

prefix=~/global_npm

现在,当我执行"npm安装-g packagename"时,它会安装在我的global_npm目录中.这很好.

export PATH=$PATH:~/global_npm/bin

我还需要做什么吗?我想我需要设置 node 路径,但我不确定?

推荐答案

Sindre Sorhus有一本很棒的github.com/sindresorhus/guides岁指南,我在这里转载过.


Install npm packages globally without sudo on OS X and Linux

默认情况下,npm会在项目中本地安装包.您还可以在全局安装软件包(例如npm install -g <package>个)(对于命令行应用程序很有用).然而,这样做的缺点是,您需要是root用户(或使用sudo)才能进行全局安装.

下面是一种为给定用户全局安装软件包的方法.

1.为您的全局包创建一个目录

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

2. Reference this directory for future usage in your .bashrc/.zshrc:

NPM_PACKAGES="${HOME}/.npm-packages"

3. Indicate to npm where to store your globally installed package. In your $HOME/.npmrc file add:

prefix=${HOME}/.npm-packages

4. Ensure node will find them. Add the following to your .bashrc/.zshrc:

NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

5. Ensure you'll find installed binaries and man pages. Add the following to your .bashrc/.zshrc:

PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath`
# command
unset MANPATH # delete if you already modified MANPATH elsewhere in your config
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

查看npm-g_nosudo自动完成上述步骤


NOTE:如果您正在运行OS X,.bashrc文件可能还不存在,终端将从另一个文件(如.profile.bash_profile)获取其环境参数.这些文件也位于用户的主文件夹中.在这种情况下,只需向其添加以下行即可指示终端也加载.bashrc文件:

source ~/.bashrc

Node.js相关问答推荐

node 无法验证第一个证书

是否可以在MongoDB中比较和匹配引用文档中的字段

AWS-ROUTE 53指向S3存储桶,错误是别名目标名称不在目标区域内

在编译时强制不缩小类型范围

通过 Node js 中的 TBA 执行 netsuite REST upsert 操作出现 401 错误

Next.js 路由不起作用 - 页面未正确加载

在生产环境中,Nest实例启动时抛出不完整的导入错误

在快速路由中使用 axios 会在数据字段中返回特殊字符而不是 json

(Mongoose) 删除 TTL 字段失败

将 AllowDiskUse true 添加到 node.js 中的 MongoDB 聚合?

在数组的另一个对象中获取数组的mongoose 对象

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

node和mongoDB聚合数据时的输入字段函数

什么使用/尊重 .node-version 文件?

如何在 Node.js 中使用 chmod

使用 pg-promise 进行多行插入

Node.js 应用程序有周期性的缓慢和/或超时(不接受传入的请求)

NPM:为什么要安装这个包?

Node.js 中的 Streams3 是什么,它与 Streams2 有何不同?

webpack-dev-server 找不到模块webpack