上一节主要是学习了node的一些背景知识和node的模块相关的知识,这节主要是学习node中经常接触到的包。
1. 包
包实际上是一个存档文件,即一个目录直接打包为.zip或者tar.gz格式的文件,安装后解压还原为目录。
包的结构主要包含以下几个:
a. package.json: 包描述文件,存放在包的根目录下,是包的重要组成部分。
b. bin: 用于存放可执行的二进制文件的目录。
c. lib: 用于存放JavaScript代码的目录。
d. doc: 用于存放文档的目录。
e. test: 用于存放单元测试用例的代码。
2. 包描述文件-package.json
1). pakeage.json包描述的简介:
package.json文件一些必须的字段的简介:
a. name: 包名,由小写字母和数字组成,可以包含点,下划线,中划线,不允许有空格,包名必须是唯一的;
b. description: 包的简介;
c. version: 包的版本号,版本号十分重要,常常用于一些版本的控制场合;
d. keywords: 关键词数组,npm中主要用来做分类搜索;
e. maintainers: 包维护者列表,每个维护者都由name,email,web这3个属性组成;
f. contributors: 贡献者列表;
g. bugs: 一个可以反馈bug的网页地址或者邮件地址;
h. licenses: 当前包所使用的许可证列表,格式如:”licenses”: [{“type”: “GPLv2”, “url”: ‘xxxxx’}];
i. repositories: 托管源代码的位置列表,表明可以通过哪些方式和地址可以访问包的源代码;
j. dependencies: 使用当前包所需要依赖的包列表,npm会通过这个属性帮助自动加载依赖的包;
package.json文件一些可选的字段的简介:
a. homepage: 当前包的网站地址;
b. os: 操作系统支持列表,取值包括,aix,freebsd,linux, macos,solaris,vxworks,windows,如果这个列表为空,则不会对操作系统做任何的假设;
c. cpu: cpu架构的支持列表,有效的架构名称有,arm,ppc,mips,sparc,x86,x86_64,如果列表为空,则不会对cpu架构做任何的假设;
d. engine: 支持JavaScript引擎列表,有效的引擎取值包括,ejs,flusspferd。gpsee,jsc,spidermonkey,narwhal,node和v8;
e. builein: 标志当前包是否内建在底层系统的标准组件;
f. directories: 包目录说明;
g. implements: 实现规范的列表,标志当前包实现了commonJS的那些规范;
h. scripts: 脚本说明对象,主要包括被包管理器用来安装,编译,测试和卸载包的功能:1
2
3
4
5
6
7"scripts": {
"install": "install.js",
"uninstall": "uninstall.js",
"build": "build.js",
"doc": "make-doc.js",
"test": "test.js"
}
2). npm实现了的字段说明:
在包描述文件的规范中,npm实际需要的字段主要有name,version,description,keywords,repositories,author,bin,main,scripts,engines,dependencies,devDependencies。与包规范的区别在玉多了author,bin,main,devDependencies这几个字段。
a. author: 包作者;
b. bin: 一些包作者希望可以作为命令行工具使用,通过配置好bin字段好,通过npm install package_name -g
命令可以将脚本添加到执行路径中,之后可以在命令行中直接执行。
c. main: 模块引入方法require()在引入包时,会优先检查这个字段,并将其作为包中其余模块的入口。如果不存在这个字段,require()方法会在查找包目录下的index.js, index.node, index.json文件作为默认入口。
d. devDependencies: 一些模块只有在开发的时候有依赖。配置这个属性,可以提示后续的开发者安装依赖包。