npm安装命令-请解释



我开始学习React Native,而且我对npm包管理器还很陌生。我读到npm可以在本地或全局安装软件包,但我正在努力理解这意味着什么。我正在读这一页https://docs.npmjs.com/getting-started/installing-npm-packages-locally请有人向我解释一下这是什么意思。

如果你想使用Node.js的require之类的东西依赖于你自己模块中的包,那么你想在本地安装,这是npm安装的默认行为。另一方面,如果您想将它用作命令行工具,比如grunt CLI,那么您需要全局安装它。

由于我对npm、React Native、Node(从未使用过它)非常陌生,我对这句话中的第一句话感到困惑。"我自己的模块"是什么意思?

如果我想使用CRNA,我想,我必须在全球范围内安装它?

如果我要在本地或全球安装一个软件包,比如CRNA,我在哪里可以看到它安装在我的MacBook Pro上?

本地安装和全局安装的区别在于,本地安装将其放入项目的node_modules目录(这就是所谓的"您自己的模块"),而全局安装将其置于系统目录(确切位置取决于您的操作系统,在OSX上应该是/usr/local/lib/node_modules)。

基本上:

  • 本地安装将安装的模块与您的项目联系起来:您计算机上的其他项目不会得到它,但如果您的项目被复制到另一台计算机上,模块也会安装在那里

  • 全局安装将它与您的计算机绑定:您可以在所有您的项目在您的计算机上,但如果您的项目被复制到另一台计算机安装的模块将不在

是的,CRNA应该全局安装,因为它是一个通用工具,而不是项目的库依赖性。

全局安装软件包时,npm install -g <package name>模块会放入{prefix}/lib/node_modules中。

Locally-npm install <package name>-将包丢弃在当前工作目录中。

如果你要在你的项目中使用require模块,你必须在本地安装它。

如果你想从命令行运行,你需要全局安装它。

如果您需要更多详细的解释,请查看

由于我对npm、React Native、Node(从未使用过)非常陌生,所以我被这句话中的第一句话弄糊涂了。"我自己的模块"是什么意思?

如果您有package.json文件,那么同一文件夹中的所有内容都将被视为"模块"。您可以通过执行npm install --save foo(--save选项将其添加到package.json中的dependencies下)来添加依赖项。

如果我想使用CRNA,我想我必须在全球范围内安装它?

不确定"CRNA"是什么。但一般规则是,大多数东西(库…)都安装在本地。这意味着它们被添加到您的package.json中,并安装在node_modules下的同一文件夹中。

只有当您想全局安装某些东西时(可以添加到package.json,但没有安装在node_modules下的同一文件夹中,但可能安装在您的主目录中),通过执行npm install --global bar(--global全局安装)。当工具(而不是库)是独立于项目的时候,因为您可以从任何地方访问它。比如创建react应用程序。


TLDR:

  • Local是安装在同一文件夹中的依赖项(库),(通常)作为依赖项添加到package.json
  • 全局是安装在用户主文件夹中的工具,(通常)不会作为依赖项添加到package.json

让我们首先从nodejs如何查找包开始。

假设你有一些文件夹结构,比如-

root
-pixel
-project1
-project2

因此,如果您正在处理project1,并且需要一些npm包,nodejs会尝试在当前目录中找到一个名为node_modules的文件夹。如果失败,它将转到父级(像素文件夹)并尝试找到node_modules,然后递归地转到根(全局)。

因此,如果有任何软件包是全局安装的,您不需要将其安装在当前的工作目录中。

那么,我们为什么不在全球范围内安装所有软件包呢?这不是节省了我们的硬盘内存吗?

是的,没错。但由于npm包每次都在更新和更改其版本,因此有必要在当前工作包中使用特定的包来避免串通。

那么,全球一揽子计划有多有用?最好安装一些cli包,直接从命令行(即webpack)运行,以简化我们的任务。

相关内容

  • 没有找到相关文章

最新更新