npm源包含包,大部分包(packages)也是模块(node modules),或者包含模块(node modules)。继续读下去,了解他们的不同之处以及他们是如何相互作用的。
关于包(packages)
包是用package.json文件描述的文件或目录。包必须包含package.json文件才能发布到npm注册表。有关创建package.json文件的更多信息,“创建package.json文件”。
包可以是没有作用域的,也可以是作用域到用户或组织的,作用域的包可以是私有的,也可以是公共的;更多信息请看:
1.关于作用域
2.关于私有包
3.包范围、访问级别和可见性
关于包格式
包是指以下任何一种:(ps:此处太不会翻译)
- a) A folder containing a program described by a package.json file.
- b) A gzipped tarball containing (a).
- c) A URL that resolves to (b).
- d) A @ that is published on the registry with (c).
- e) A @ that points to (d).
- f) A that has a latest tag satisfying (e).
- g) A git url that, when cloned, results in (a).
npm包git URL格式
用于npm包的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可以是任何可以作为git checkout参数的tag,sha或者branch;默认commit-ish是master。
关于模块
一个模块可以是node_modules文件夹中的任何文件或文件夹,可以被Node.js的require()函数加载。
为了能被Node.js的require()函数加载,一个模块必须是以下之一:
- 文件夹,其中包含package.json文件,package.json文件中包含“main”字段。
- js文件
注意:因为模块不是必须要有一个package.json
文件,不是所有的模块(modules)都是包(packages),仅仅是包含package.json
文件的模块也还是包。
在Node程序的上下文中,模块也是从文件加载的。 例如,在以下程序中:
var req = require('request')
我们可以说“变量req引用模块”。