NPM基础知识和本地安装?

我不是普通的节点用户,所以如果这是一个愚蠢的新手问题,我很抱歉,但是我一直没有find任何明确的文档,而我那些微弱的新手节点技巧并没有让我深入自己。

我正在按照这些说明来安装Ghost博客系统(使用NodeJS构build的系统)。

在告诉我在刚刚下载的包文件夹中打开一个terminal窗口之后,yhe指令包含以下行

在新的terminal标签中键入npm install --production

这使我困惑。 我对npm理解是它像perl的CPAN一样是一个包pipe理器

  1. 从互联网获取软件包

  2. 将它们安装到我的本地节点系统中

这显然不是上面发生的事情,但是当我运行这个命令时,我不知道发生了什么事情,而且由于我没有和NodeJS人群一起运行,所以我不知道该问谁。

我想知道NPM在做什么。 具体的问题

  • 当我运行npm install ,它看起来像是下载了一些软件包(在控制台中有很多npm http GET )。 NPM如何知道要下载什么?

  • 在哪里下载这些模块文件? npm如何知道在哪里下载文件?

  • --production标志对NPM的行为有什么影响?

很高兴能有具体的答案,或者一个元回答,指出我可以学习npm如何与应用程序安装(似乎是)安装(与系统安装,这是我通常如此看待)

npm有几种不同的安装模式。 从一个模块(带有一个package.json文件)中, npm install安装package.json文件的dependenciesdevDependencies字段中列出的dependencies devDependencies 。 安装意味着下载模块的文件,放置在node_modules文件夹,然后npm installed自己npm installed (但只有它们的dependencies ),放置模块自己的node_modules文件夹。 这继续下去,直到所有需要安装。 使用npm ls来查看已安装软件包的树。

大多数时候,这是你想要的,因为在模块中运行npm install是你在开发模块时要做的事情,而且你需要运行testing等等(这是devDependencies的用途)。

有时候,你会编码一个消耗模块的服务,但不一定要像一个一样对待(不打算被require )。 鬼是这样的情况。 在这些情况下,您需要npm install --production ,它只安装dependencies ,而不是devDependencies

当我运行npm install时,它看起来像是下载了一些软件包(在控制台中有很多npm http GET)。 NPM如何知道要下载什么?

它读取当前目录中的package.jsonconfiguration文件。

在哪里下载这些模块文件? npm如何知道在哪里下载文件?

它将创build并填充当前目录中的node_modules目录。 文件结构被devise为npm / node,并且(主要)是故意不可configuration的。

– 生产标志对NPM的行为有什么影响?

只安装没有从package.json devDependenciesdependencies ,意思是“给我什么我需要运行这个应用程序,但我不打算做这个应用程序的开发,所以我不需要开发的东西”。

npmjs.org有一些文档,常见问题和手册页 ,虽然他们大多缺乏基本的介绍材料,但是相当不错。