我已经读过npm doc,但是我的一些概念仍然不清楚,可能看起来很幼稚,如下所示:
Q1。
包是package.json描述的文件或目录 文件。
“由package.json
文件描述的” 是什么意思?有没有容易理解的例子?
第二季度。
要打包的条件
包是package.json描述的文件或目录 文件。
要成为模块的条件
要由Node.js require()函数加载,模块必须是一个 以下:
- 包含package.json文件的文件夹,其中包含“主”字段。
- 其中包含index.js文件的文件夹。
- JavaScript文件。
注意:由于模块不需要具有package.json文件,因此不需要 所有模块都是软件包。仅具有package.json文件的模块 也是包。
因此,根据注意,这是否也并不意味着所有软件包也是模块,因为所有软件包都有package.json文件?
答案 0 :(得分:1)
模块是可以用require()
加载的任何东西,并且可以做一些有用的事情。它可以是单个文件。它不需要与package.json相关联。实际上,许多本地开发的“模块”却没有。同一目录中可以有许多模块。
软件包是为便于分发而设计的一组代码。如果您使用的是NPM软件包管理器,则NPM软件包将包含package.json文件,该文件包含一堆有关该软件包的元数据,包括诸如对其他模块的依赖关系,作者信息,存储库信息以及有关如何测试的信息模块,有关哪个文件是模块的启动文件的信息,等等...
仅供参考,NPM并不是唯一的软件包管理器,因此它也不是唯一的处理方式,但是对于node.js开发,它无疑是使用最广泛的软件包,并且它提供了一个中央存储库,可以轻松地“发布”软件包进行广泛而简单的分发。
所有软件包在Node中也都是模块吗?
我想可以在程序包中分发可运行代码以外的东西,但是NPM包的主要用途是分发模块。
这里是分发静态数据而不是代码的示例:JSON Data Node Modules Part 1: Using NPM to Store and Distribute Static Data。