每一个Nodejs项目的根目录下面,通常都会有一个package.json文件。该文件能够由npm init
生成,定义了项目所须要的各类模块,以及项目的配置信息(好比名称、版本、许可证等元数据)。html
package.json文件内部就是一个JSON对象,该对象的每个成员就是当前项目的一项设置。node
namenpm
项目名称(npm包名)。必需字段json
version数组
项目版本。必需字段。在实际使用中,通常能够看到各类形式的版本号:grunt
*: 任意版本 1.1.0: 指定版本 ~1.1.0: 1.1.0 <= 版本 < 1.2.0 ^1.1.0: 1.1.0 <= 版本 < 2.0.0 latest:安装最新版本。
*
表示任意版本;~
前缀表示,安装大于指定的这个版本,而且匹配到 x.y.z 中 z 最新的版本;^
前缀在 ^0.y.z 时的表现和 ~0.y.z 是同样的,然而 ^1.y.z 的时候,就会匹配到 y 和 z 都是最新的版本;author && contributors单元测试
项目做者以及贡献者。author是字符串形式的做者名,contributors是一个项目贡献者数组。测试
description && keywords命令行
项目描述和项目关键字。帮助人们在使用npm search时找到这个包。code
license
许可证。
scripts
定义脚本命令。它的每个属性,对应一段脚本。而且能够在命令行下使用npm run命令执行这段脚本。
npm 脚本的原理很是简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。所以,只要是 Shell(通常是 Bash)能够运行的命令,就能够写在 npm 脚本里面。
比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。
更多可参考阮老师的 npm scripts 使用指南
dependencies && devDependencies
npm install
在安装node模块时,有两种命令参数能够把它们的信息写入package.json文件: –save
以及–save-dev
。–save
会把依赖包名称添加到package.json文件dependencies
键下,–save-dev
则添加到package.json文件devDependencies
键下。
dependencies
字段指定了项目生产环境中须要的依赖,即正常运行该包时所依赖的模块,devDependencies
指定项目开发所须要的依赖项,像一些进行单元测试之类的包,好比grunt-contrib-uglify,咱们用它混淆js文件,它们不会被部署到生产环境。
它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
bin
用来指定各个内部命令对应的可执行文件的位置。
例如:
"bin": { "someTool": "./bin/someTool.js" }
上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js
main
指定包的入口程序文件。这个字段的默认值是模块根目录下面的index.js。
config
用于向环境变量输出值。
好比:
{ // ... "config" : { "port" : "8080" }, }
而后经过process.env.npm_package_config_port
读取该值。
engines
指定node的工做版本
man
指定当前模块的man文档的位置。
preferGlobal
布尔类型值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告。
...