NPM基础知识和本地安装?
我不是普通的节点用户,所以如果这是一个愚蠢的新手问题,我很抱歉,但是我一直没有find任何明确的文档,而我那些微弱的新手节点技巧并没有让我深入自己。
我正在按照这些说明来安装Ghost博客系统(使用NodeJS构build的系统)。
在告诉我在刚刚下载的包文件夹中打开一个terminal窗口之后,yhe指令包含以下行
在新的terminal标签中键入
npm install --production
这使我困惑。 我对npm
理解是它像perl的CPAN
一样是一个包pipe理器
-
从互联网获取软件包
-
将它们安装到我的本地节点系统中
这显然不是上面发生的事情,但是当我运行这个命令时,我不知道发生了什么事情,而且由于我没有和NodeJS人群一起运行,所以我不知道该问谁。
我想知道NPM在做什么。 具体的问题
-
当我运行
npm install
,它看起来像是下载了一些软件包(在控制台中有很多npm http GET
)。 NPM如何知道要下载什么? -
在哪里下载这些模块文件?
npm
如何知道在哪里下载文件? -
--production
标志对NPM的行为有什么影响?
很高兴能有具体的答案,或者一个元回答,指出我可以学习npm
如何与应用程序安装(似乎是)安装(与系统安装,这是我通常如此看待)
npm
有几种不同的安装模式。 从一个模块(带有一个package.json
文件)中, npm install
安装package.json
文件的dependencies
和devDependencies
字段中列出的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.json
configuration文件。
在哪里下载这些模块文件? npm如何知道在哪里下载文件?
它将创build并填充当前目录中的node_modules
目录。 文件结构被devise为npm / node,并且(主要)是故意不可configuration的。
– 生产标志对NPM的行为有什么影响?
只安装没有从package.json
devDependencies
的dependencies
,意思是“给我什么我需要运行这个应用程序,但我不打算做这个应用程序的开发,所以我不需要开发的东西”。
npmjs.org有一些文档,常见问题和手册页 ,虽然他们大多缺乏基本的介绍材料,但是相当不错。