我不是常规节点用户,所以我很抱歉这是一个愚蠢的新手问题,但我还没有找到任何关于此的明确文档,而且我的微弱新手节点技能不让我深入研究我。
我正在跟随these instructions一起安装Ghost博客系统(使用NodeJS构建的系统)。
告诉我在刚下载的软件包文件夹中打开终端窗口后,说明中包含以下行
在新终端标签中输入
npm install --production
这让我很困惑。我对npm
的理解是它是一个包管理器,就像perl的CPAN
从互联网上获取包
将它们安装到我的本地节点系统
这显然不是上面发生的事情,但我不知道当我运行该命令时 发生了什么,并且由于我没有使用NodeJS人群,我不知道该向谁发送问。
我想知道NPM在做什么。具体问题
当我运行npm install
时,看起来它正在下载一些软件包(控制台中有很多npm http GET
)。 NPM如何知道下载什么?
将这些模块文件下载到哪里? npm
如何知道下载文件的位置?
--production
旗帜对NPM的行为有什么影响?
很高兴有特定的答案,或者一个元答案,指出我可以在哪里学习npm
如何使用(似乎是)应用程序安装(相对于系统安装,这是我通常的方式想一想)
答案 0 :(得分:2)
npm
有几种不同的安装模式。在模块内(使用package.json
文件)npm install
安装dependencies
文件的devDependencies
和package.json
字段中列出的依赖项。安装意味着下载模块的文件,放在node_modules
文件夹中,然后npm installed
自己,(但只有dependencies
)放置模块自己的node_modules
文件夹。这将继续,直到安装所需的一切。使用npm ls
查看已安装软件包的树。
大多数情况下,这就是你想要的,因为在模块中运行npm install
就是你在开发它时会做的事情,你会想要运行测试等(这就是{{ 1}}是为了。
有时候,您将编写一个使用模块的服务,但不一定会被视为一个(不是devDependencies
'd)。鬼是这样的情况。在这些情况下,您需要require
,只需安装npm install --production
,然后保留dependencies
。
答案 1 :(得分:1)
当我运行npm install时,看起来它正在下载一些 包(在控制台中有很多npm http GET)。 NPM如何知道什么 下载?
它读取当前目录中的package.json
配置文件。
将这些模块文件下载到哪里? npm如何知道在哪里下载文件?
它将在当前目录中创建并填充node_modules
目录。文件结构设计为npm / node,并且(大部分)故意不可配置。
- 生产标志对NPM的行为有什么影响?
只安装dependencies
devDependencies
package.json
,{{1}},意思是“给我运行此应用所需的内容,但我不打算在此应用上进行开发,我不需要dev-only东西“。
npmjs.org has some docs, FAQ, and man pages,虽然它们大多缺乏基本的介绍材料,但它们还不错。