如何使用 npm 全局安装模块?
Posted
技术标签:
【中文标题】如何使用 npm 全局安装模块?【英文标题】:How do I install a module globally using npm? 【发布时间】:2011-08-14 15:26:05 【问题描述】:我最近在 OSX 上安装了 Node.js 和 npm 模块,我认为设置有问题:
npm install [MODULE] is not installing the node.js module to the default path
which is /usr/local/lib/node_modules.
【问题讨论】:
【参考方案1】:如果要全局安装 npm 模块,请确保使用新的 -g
标志,例如:
npm install forever -g
自 1.0rc 起关于 npm 模块安装的一般建议(取自blog.nodejs.org):
如果您要安装一些您想在程序中使用的东西,请使用 require('whatever'),然后安装它 本地,在你的根 项目。 如果您要安装一些要在 shell 中使用的东西,请在 命令行什么的,安装 它是全局的,所以它的二进制文件 最终进入您的 PATH 环境 变量。
我最近刚刚使用了这个建议,并且非常顺利。我永远安装在全局(因为它是一个命令行工具)和我所有的应用程序模块在本地。
但是,如果您想在全局范围内使用某些模块(即 express 或 mongodb),请接受此建议(也来自 blog.nodejs.org):
当然,在某些情况下 你想两者都做。咖啡脚本和 Express 都是很好的应用示例 具有命令行界面的,如 以及图书馆。在这些情况下,你 可以执行以下操作之一:
在两个地方都安装它。说真的,你的磁盘有那么短吗 空间?没关系,真的。它们很小 javascript 程序。 全局安装,然后 npm link coffee-script 或 npm link express (如果您使用的平台支持 符号链接。)然后你只需要 更新全局副本以更新所有 符号链接也是如此。第一个选项是我最好的 观点。简单、清晰、明确。这 如果你是,第二个真的很方便 将在 a 中重用同一个库 一堆不同的项目。 (更多关于 npm 链接在以后的部分中。)
我没有测试其中一种变体,但它们似乎非常简单。
【讨论】:
感谢您的澄清。 Isaacs 应该用上面的文本替换整个 npm manfile 和 git wiki。可以消除大众的困惑。 谢了。这派上用场了,我被这个变化抓住了。在某些时候,npm install 提供了命令行访问权限,然后它就消失了,我没有足够密切地关注项目以赶上过渡。 这解释了为什么我的 Apache 配置目录中有一个节点模块。 . . 来自blog.node.js.org :通常全局二进制文件安装在 prefix/bin 中,全局模块安装在 prefix/node_modules 中,本地模块在 ./node_modules 中,可执行文件在 ./node_modules 中/.bin/ 。您可以运行npm prefix
来获取本地前缀,并运行node prefix -g
来查看全局前缀:)
"如果你正在安装你想在你的程序中使用的东西,使用 require('whatever'),然后 在本地安装它,在你的项目的根目录。” - 我认为,如果模块包含已编译的二进制文件,这不是一个好主意:它必须在 linux 和 windows 上正确重新编译。我认为必须使用 NODE_PATH 环境变量设置此类模块(nodejs.org/api/…)【参考方案2】:
在 Mac 上,我发现输出包含我正在寻找的信息:
$> npm install -g karma
...
...
> ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
...
$> ls /usr/local/share/npm/bin
karma nf
将/usr/local/share/npm/bin
添加到我的.bash_profile
中的export PATH
行,保存它并source
ing 之后,我就可以运行了
$> karma --help
通常。
【讨论】:
【参考方案3】:我喜欢在应用文件夹的根目录中使用 package.json 文件。
这是我用的一个
nvm use v0.6.4
npm install
【讨论】:
【参考方案4】:我在 Ubuntu 上安装 Express 时遇到问题:
如果由于某种原因缺少 NPM 命令,请使用 npm help
测试 npm 命令。如果没有,请按照以下步骤操作 - http://arnolog.net/post/8424207595/installing-node-js-npm-express-mongoose-on-ubuntu
如果只是 Express 命令不起作用,请尝试:
sudo npm install -g express
这让我在使用 Windows7 和 OSX 时一切正常。
希望这会有所帮助!
【讨论】:
【参考方案5】:你需要有超级用户权限,
sudo npm install -g <package name>
【讨论】:
【参考方案6】:根据官方文档推荐的步骤在我的 Macbook 上对我有用。
总结步骤:
使用以下命令实例化 nvm:
卷曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh |重击
您可以在此页面查看最新版本: https://github.com/nvm-sh/nvm
如果文件已经不存在,则在主目录中创建 .zshrc。
触摸.zshrc
将以下内容放入 .zshrc 文件中
导出 NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && 。 "$NVM_DIR/nvm.sh" # 这会加载 nvm
-
使用命令安装 nvm
nvm install --lts
-
重启终端 - 你现在可以使用 npm 安装全局包了。
【讨论】:
【参考方案7】:在 Ubuntu 中,在 .bashrc 文件中设置 node_modules 的路径
export PATH="/home/username/node_modules/.bin:$PATH"
【讨论】:
【参考方案8】:您可能没有在全局位置(例如/usr/local/lib/node_modules
)安装节点模块的写入权限,在这种情况下,请以 root 身份运行 npm install -g package。
【讨论】:
以上是关于如何使用 npm 全局安装模块?的主要内容,如果未能解决你的问题,请参考以下文章