package.json 中包含各种所需模块以及项目的配置信息(名称、版本、许可证等)meta 信息。
Name:它属于必须字段,在package.json中最重要的就是name和version字段,如果没有就无法install。name和version一起组成的标识在假设中是唯一的。改变包应该同时改变version。使用时,应注意以下三点:
1.不要在name中包含js, node字样;
2.这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头;
3.这个名字可能在require()方法中被调用,所以应该尽可能短;
Version:同上,属于必须字段;
Description:可选字段,它必须是字符串,帮助我们了解创建的包;
Keywords:可选字段,可以是字符串数组,比如"javascript, nodejs"
homepage:可选字段,项目官网的url。注意:这和“url”不一样。如果你放一个“url”字段,registry会以为是一个跳转到你发布在其他地方的地址。
Bugs:可选字段,问题追踪系统的URL或邮箱地址;npm bugs用的上。
license:指定一个许可证,让人知道使用的权利和限制的。
main:main字段配置一个文件名指向模块的入口程序。如果你包的名字叫foo,然后用户require("foo"),main配置的模块的exports对象会被返回。
scripts:“scripts”是一个由脚本命令组成的hash对象,他们在包不同的生命周期中被执行。key是生命周期事件,value是要运行的命令。
Config:可选对象,为一个obj,Config对象中的值在Scripts的整个周期中皆可用,专门用于给Scripts提供配置参数。
Repository:指定你的代码存放的地方。
Dependencies:指示当前包所依赖的其他包,版本格式可以是下面任一种:
-
version
完全匹配 -
>version
大于这个版本 -
>=version
大于或等于这个版本 -
<version
-
<=version
-
~version
非常接近这个版本 -
^version
与当前版本兼容
devDependencies:可选字段。如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。
Private:可选字段,布尔值。如果private为true,npm会拒绝发布。这可以防止私有repositories不小心被发布出去。