
2.1.3 package.json属性说明
NPM在package.json文件中管理项目的依赖项以及项目的元数据。
node执行require指令时,会根据package.json中的依赖项执行查找。每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(如项目名称、版本号、许可证等元数据)。npm install命令会根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。例如:

package.json文件就是一个JSON对象,该对象的每一个成员就是当前项目的一项基础设置信息,各成员说明如下:
· Name:包名。
· Version:包的版本号,语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。
· Description:包的描述。
· Homepage:包的官网地址。
· Author:包的作者姓名。
· Contributors:包的其他贡献者姓名。
· Dependencies:依赖包列表,指定了项目运行所依赖的模块。如果依赖包没有安装,npm就会自动将依赖包安装在node_module目录下。
· devDependencies:指定项目开发所需要的模块。
· repository:包代码存放的地方的类型,可以是Git或Svn,Git可在GitHub上。
· main:main字段指定了程序的主入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
· keywords:关键字。
· scripts:指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时所要执行的命令。
· bin:用来指定各个内部命令对应的可执行文件的位置。
· config:用于添加命令行的环境变量。
package.json文件可以手工编写,也可以使用npm init命令自动生成:
npm init
这个命令采用交互方式要求用户回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。
有了package.json文件,直接使用npm install命令就会在当前目录中安装所需要的模块。
$ npm install
如果一个模块不在package.json文件中,可以单独安装这个模块,并使用相应的参数将其写入package.json文件中:
$ npm install express --save $ npm install express --save-dev
这两行代码表示单独安装express模块,--save参数表示将该模块写入dependencies属性,--save-dev表示将该模块写入devDependencies属性。