name

package.json 中最重要的属性是 name 和 version. 这两个属性是必须要有的, 否则模块无法被安装. 这两个属性一起形成了一个 npm 模块的唯一标识符.
模块中内容变化的同时, 模块版本也应该一起变化.
name 属性就是你的模块名称, 下面是一些命名规则:

  • name 必须小于等于214字节, 包括前缀名称在内(如../..module)
  • name 不能以’_’或’.’开头
  • 不能有大写字母
  • name 会成为 url 的一部分, 不能有 url 非法字符
  • 不要使用和 node 核心模块一样的名称
  • name 中不要有 ‘js’ 和 ‘node’

version

version 必须可以被 npm 依赖的一个 node-server 模块解析

description

一个描述, 方便别人了解你的模块的作用, 搜索的时候也有用

keywords

一个字符串数组, 方便别人搜到本模块

homepage

项目主页 url
注意: 这个项目主页 url 和 url 属性不同, npm 注册工具会认为你把项目发布到其他地方了, 获取模块的时候不是从官方仓库后去, 而是去 url 配置的地址

bugs

填写一个提交 bug 的地址或邮箱

{
 'url': 'https://www.ezcook.de/project/issue',
 'email': '[email protected]'
}
`</pre>

如果只填写一个, 可以返回字符串而不是对象

### license

为模块制定一个协议, 通知用户可以使用的权限, 最常见的是 BSD-3-Clause 或 MIT

<pre>`{'license': 'MIT'}
`</pre>

### author, contributors

### files

files 属性的值是一个数组, 内容是模块下文件名或文件夹名, 如果是文件夹名, 则文件夹下所有文件也会被包含.
可以在模块根目录下创建一个 '.npmignore' 文件, 写在这个文件里的文件会被排除在 file 属性

### main

main 属性指定程序的主入口文件, 比如这个模块(文件夹)命名为'foo', package.json中' main' 属性指定为'test.js', 则通过 require(foo)来使用模块的时候会滴啊用 test.js 脚本.
他应该指向模块根目录下得一个文件, 默认为 index.js

### bin

很多模块有一个或多个需要配置到 PATH 路径下的可执行模块...

### man

制定一个或通过数组指定一些文件夹让 linux 下的 man 指令查找文档地址

### directories

### repository

指定一个代码存放的地址

<pre>`'repository':
{
  'type':'git',
  'url':'https://github.com/...'
}

如果是 Github, 可以用缩写完成
‘repository’:’gist:…’`

scripts

scripts 属性是一个对象, 里面制定了项目的生命周期各个环节需要执行的命令, key 是生命周期中的时间, value 是要执行的命令
具体内容有 install, start, stop 等, 详情见npm/scripts

config

用来设置一些项目不怎么变化的项目配置, 如 port 等

dependencies

dependencies 属性是一个对象, 配置依赖模块的模块列表, key 是模块名称, vlaue 是版本范围, 版本范围是一个字符, 可以被一个或多个空格分隔.
比如

```
‘dependencies’:
{
‘foo’:’1.0.0 - 2.0.0’
‘foo1’:’>=1.0.0’
}

devDependencies

如果有人想下载并使用你的模块, 也许他们并不希望或需要下载一些你在开发过程中额外的测试或文档框架
这种情况下最好把这些依赖添加到 devDependencies 中, 这些模块会在 npm link 或者 npm install 的时候被安装, 也可以像其他 npm 配置一样被管理