我的知识npm
是这样的:
它是Node.js
应用程序的包管理器.这意味着当您需要其他人的库/包用于您的节点应用程序时,您可以方便地使用它npm
来获取这些依赖项.
但我最近遇到了这个命令:
npm install -g cca
.
然后我进入cca
我的终端,现在它启动了一些程序.
现在我的问题是如何npm
安装可通过终端访问的软件包?我的意思是所有安装的软件包npm
都应该可以通过节点应用程序代码访问(在JavaScript中).这让我很困惑.
npm install
是一个复杂的命令 - 它至少有三个主要功能:
从Node包内部(即带有package.json
文件的目录或其某个子目录),运行npm install
安装该包的所有声明的依赖项.它将这些下载的软件包粘贴在一个node_modules
目录中,并且它们都可以通过应用程序的JavaScript代码获得.
同样,从节点包内部,运行npm install
将从npm包存储库下载并安装命名包.它将再次将其放在node_modules
目录中,以便该应用程序可以使用它.
从任何地方开始,运行npm install -g
将全局下载并安装命名包.这意味着它将安装到系统的node_modules目录中,并且可供所有节点包使用.
使用-g的第三种用法也用于命令行实用程序(而不是库).使用-g安装时,软件包可以执行诸如在/ usr/local/bin中安装新命令或安装手册页之类的操作.然后可以从shell运行这些命令.
这就是cca
安装它时的原因,也是我们建议安装的原因-g
; 这样您就可以使用该cca
命令从任何地方创建应用程序,而不是因为它是一种打包实用程序.
听起来你的主要问题不是如何,而是为什么?
这里的区别在于节点包与节点模块之间.
只有*模块*S是为了进行require()
其他节点的应用程序编,而不是所有的包上的npm
需要是模块.有许多有用的节点包只与节点间接相关.例如,gulp
或grunt
或cordova
或cca
等
这些答案直接来自npm常见问题解答(重新编写)
对于cca
具体而言,我们希望有一个节点模块在未来,这样的问题:"为什么故宫"只是前瞻性的思维.此外,cca
是一个始终托管的下游分布cordova
(就像phonegap
)npm
,我们希望继续这种传统.