在我的package.json
文件中,我将凉亭列为依赖项。运行npm install
后,bower将在本地安装。当我在本地安装bower后尝试运行bower时出现错误
“bower”未被识别为内部或外部命令
解决此问题的唯一方法是全局安装bower。我为什么要这样做?如果我的项目包含凉亭的本地副本,为什么节点不会使用它呢?
答案 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,我们得到了项目工具。
当然,您将获得重复,但每个项目都由不同的团队维护(有些人在多个团队中),所以再次说明,在全局设置中有一个版本是一个问题。