Node.js和npm哪个字select“包”还是“模块”?

我很困惑npm是一个包pipe理器,但Node.js有模块。 所以当你安装或创build自己的…恩,模块,包? 哪一个字select另一个,什么时候?

看看文档http://nodejs.org/docs/latest/api/modules.html

在Node中,文件和模块是一一对应的。

另一方面,包是一个包含特殊package.json文件的文件夹。 该文件告诉解释器如何在require(folder);时加载模块require(folder); 。 换句话说,包是模块的集合。

在Node中,单个文件是一个模块。 这是一个与程序其他部分有些孤立的实体,而按照惯例,通常是作为一个独立的程序来运行(即使它没有做任何事情)。 另一方面,节点中的包是一个更大的实体。 它基本上是一个完整的程序/库,可以达到某种目的。 一个包可能包含一个单独的模块文件或数百个文件。

这个包通常由包的根目录中的“package.json”来定义,它描述了创build者的目的以及关于该程序的其他内容。

如果它的顶部有package.json / package.yaml ,并且可以从npmregistry中安装,那肯定是一个包。

如果它是用CommonJS标准编写的一个简单的JavaScript文件(也许是你的包的一部分),它是一个模块。