本地安装与全局安装的NPM模块

时间:2014-12-09 22:21:14

标签: node.js npm windows-7 bower

在我的package.json文件中,我将凉亭列为依赖项。运行npm install后,bower将在本地安装。当我在本地安装bower后尝试运行bower时出现错误

  

“bower”未被识别为内部或外部命令

解决此问题的唯一方法是全局安装bower。我为什么要这样做?如果我的项目包含凉亭的本地副本,为什么节点不会使用它呢?

4 个答案:

答案 0 :(得分:33)

本地安装使bower可用于当前项目(它将所有节点模块存储在node_modules中)。这通常只适用于这样的模块var module = require('module');它将无法作为命令提供,shell可以解析,直到您全局安装npm install -g module,其中npm将安装它位于路径变量将解析此命令的位置。

编辑: This documentation解释得非常彻底。

答案 1 :(得分:19)

您可以在cmd:

中键入以下行来执行本地实例
node_modules/bower/bin/bower <bower args>

答案 2 :(得分:2)

通常,如果要将NPM模块包含在从命令行运行的路径中,则全局安装NPM模块。由于它是在本地安装的,因此您必须从node_modules文件夹中运行它。

答案 3 :(得分:2)

我们同时使用PHP和JavaScript,因此我们有composer和npm。

我们处理的每个项目都有不同的软件包,包括运行时包和构建/开发工具。

由于每个项目都有版本限制,因此全局安装软件包的x版本(将从命令行运行)会导致我们出现问题,我们会在每个软件包中安装所有工具。在相应的composer.json / package.json文件中定义要容易得多。

但是,如果必须不断添加命令的附加路径,那么运行CLI工具会很麻烦。

为此,我们向团队建议在适当的.bashrc(或等效文件)中将以下路径添加到$PATH

./vendor/bin:./node_modules/.bin

(编辑:对于Windows,路径为.\vendor\bin;.\node_modules\.bin;

因此,在项目X中,我们可以访问该项目的CLI工具。切换到项目Y,我们得到了项目工具。

当然,您将获得重复,但每个项目都由不同的团队维护(有些人在多个团队中),所以再次说明,在全局设置中有一个版本是一个问题。