官方文档: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-ish
git+ssh://user@hostname:project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+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
模块的引用。