npm install命令 - 请解释

时间:2017-11-19 20:21:44

标签: node.js react-native npm

我开始学习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上?

4 个答案:

答案 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,以简化我们的任务。