官方文档:https://docs.npmjs.com/about-packages-and-modules
包的定义
package,包,它是一个由 package.json 描述的文件或者目录,一个包必须包含一个 package.json 文件。
包的格式
- 一个文件夹包含一个由
package.json文件描述的程序。 - 一个包含
1的压缩包 - 一个可以解析为
2的URL - 一个发布过的
<name>@<version>且它包含一个3 - 一个
<name>@<tag>指向4 - 一个包含
latest标签的<name>且它满足5 - 一个 git 的url,克隆的文件是
1
而 git 的 url 满足以下情况:
git://github.com/user/project.git#commit-ishgit+ssh://user@hostname:project.git#commit-ishgit+http://user@hostname/project/blah.git#commit-ishgit+https://user@hostname/project/blah.git#commit-ish
commit-ish 可以是任何标志,比如分支名、hash值这些可以作为git checkout 参数的内容,默认的 commit-ish 是 master
模块的定义
module,模块,它是 node_modules 里面的任何可以被 Node.js 的 require()函数所加载的文件或者目录。形式如下:
- 一个包含
package.json文件的文件夹 - 一个
JavaScript文件
由于模块不一定包含一个 package.json 文件,而包一定包含,所以模块不一定是包,但包含 package.json 文件的模块也是一个包。
在 Node.js 的程序上下文中,模块也可以理解为一个从文件里被加载的事物,比如
1 | var req = require('request'); |
那么我们就会说 req 是 request 模块的引用。