我开始学习React Native,我对npm包管理器很新。我读到npm可以安装localy或globaly包但我试图理解这是什么意思。 我正在阅读此页面https://docs.npmjs.com/getting-started/installing-npm-packages-locally,有人可以向我解释这意味着什么。
如果你想依赖Node.js需要的东西从你自己的模块中依赖,那么你想在本地安装,这是npm install的默认行为。另一方面,如果你想将它用作命令行工具,比如grunt CLI,那么你想要全局安装它。
由于我对npm很新,React Native,Node(从未使用过它),我对这句话中的第一句话感到困惑。它是什么意思“我自己的模块?
如果我想使用CRNA,我想,我必须全局安装吗?
如果我要安装软件包,请在本地或全球范围内说CRNA,我在哪里可以看到它安装在我的MacBook Pro上?
答案 0 :(得分:1)
在npm install -g <package name>
。
{prefix}/lib/node_modules
模块时
本地 - npm install <package name>
- 在当前工作目录中删除包。
如果您要在项目中使用require
模块,则必须在本地安装。
如果要从命令行运行,则需要全局安装。
如果您需要更多的解释take a look
答案 1 :(得分:1)
本地安装和全局安装之间的区别在于本地安装将其放入项目的node_modules
目录(这就是所谓的“您自己的模块”),而全局将其放入系统目录(确切的位置取决于您的操作系统,在OSX上它应该是/usr/local/lib/node_modules
。
基本上:
本地安装将已安装的模块绑定到您的项目:计算机上的其他项目无法获取,但如果您的项目被复制到另一台计算机,模块也将安装在那里
全局安装将其与您的计算机绑定:您可以在所有计算机上使用它 您的计算机上的项目,但是如果您的项目被复制到 另一台计算机上安装的模块不在那里
是的,CRNA应该全局安装,因为它是一个通用工具而不是项目的库依赖。
答案 2 :(得分:1)
由于我对npm很新,React Native,Node(从未使用过它),我对这句话中的第一句话感到困惑。它是什么意思&#34;我自己的模块?
如果您有package.json
个文件,则同一文件夹中的所有内容都会被视为&#34; module&#34;。您可以通过npm install --save foo
添加依赖关系(--save
选项将其添加到dependencies
中的package.json
下。
如果我想使用CRNA,我想,我必须全局安装吗?
不确定&#34; CRNA&#34;是。但一般规则是,大多数(库......)都是在本地安装的。这意味着它们已添加到您的package.json
并安装在node_modules
下的同一文件夹中。
仅当您要全局安装某些内容时(可以添加到package.json
但不安装在node_modules
下的同一文件夹中,但可能位于您的主目录中),执行{{1} (npm install --global bar
全局安装)。当工具(而不是库)与项目无关时,您可以从任何地方访问它。类似于create-react-app。
TLDR:
--global
中。package.json
。答案 3 :(得分:1)
首先让我们从nodejs如何找到包开始。
假设您有一些文件夹结构,如 -
root
-pixel
-project1
-project2
因此,如果您正在处理project1
并且需要一些npm包,则nodejs会尝试在当前目录中查找名为node_modules
的文件夹。如果失败,它将转到父(像素文件夹)并尝试查找node_modules
并递归到root(这是全局的)。
因此,如果全局安装了任何软件包,则无需在当前工作目录中安装它。
那么,为什么我们不在全球安装所有包?是不是节省了我们的硬盘内存?
是的,是的。但是由于npm软件包每次都在更新和更改其版本,因此必须在当前工作包中使用特定软件包以避免串通。
那么全局包有用吗?
最好安装一些cli软件包直接从命令行运行,即webpack
,以简化我们的任务。