Node.js项目的package.json文件说明

基于 Node.js 的项目中,都会有一个package.json文件,该文件记录当前项目的基本信息以及包依赖情况,有点类似于.Net 中的项目解决方案文件.csproj
该篇文章主要对开发过程中遇到的一些一些有关package.json配置信息的记录。官方说明文档:package.json

node:package.json是一个纯 json 的文件。

1、name

如果你要发布你的包,那么必须添加nameverson两个参数,这两个参数可以确保包的唯一性。当然,如果不需要发布,则这两个参数是可选的。
name的命名有几点规则:
1、不能超过 214 个字符
2、不能以点或下划线开头
3、不能包含大写字母
4、因为包名称会成为 URL 的一部分,所以不能包含非 URL 安全字符

2、verson

版本

3、description

项目的说明

4、keywords

包的关键字,是一个数组类型,方便搜索包

5、homepage

包的主页 URL

6、bugs

提交 bug 的地址,例如仓库的 issues 地址或者邮箱地址

1
2
3
4
{
"url": "https://github.com/iamoldli/NetModular/issues",
"email": "project@hostname.com"
}

7、license

许可证,例如

1
{ "license": "BSD-3-Clause" }

8、people fields: author, contributors

author标识作者,contributors标识贡献者,数组格式

9、files

files属性是可选的,是一个数组,里面存放文件名或者文件夹名,用来将指定的文件包含到项目中,按照约定,以下文件总是被包含:

1
2
3
4
5
6
package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
The file in the “main” field

一下文件或目录总是忽略:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
.*.swp
.DS_Store
._*
npm-debug.log
.npmrc
node_modules
config.gypi
*.orig
package-lock.json (use shrinkwrap instead)

10、main

main属性指定了模块的入口程序文件。就是说,如果你的模块名叫”foo”,用户安装了它,并且调用了 require(“foo”),则这个 main 字段指定的模块的导出对象会被返回。这应该是一个相对于包根目录的模块标识。对于大部分模块来说,main 字段除了指定一个主入口文件以外没什么其他用处了。

11、repository

包的仓库地址,如下:

1
2
3
4
5
6
7
8
9
"repository": {
"type" : "git",
"url" : "https://github.com/npm/cli.git"
}

"repository": {
"type" : "svn",
"url" : "https://v8.googlecode.com/svn/trunk/"
}

12、scripts

scripts包含一系列的脚本命令,可查看npm-scripts

13、dependencies

dependencies标识生成环境依赖的包,这些包会在打包时一起打包

14、devDependencies

顾名思义,开发时依赖的包