在之前我写了一篇初识webpack模块打包工具的文章,在这篇文章里面提到使用了npm init初始化命令之后,自动创建了一个package.json文件,而本篇文章也就介绍package.json文件里面的对象信息。以下是一个完整package.json文件内容。
{
"name": "Hello World",
"version": "0.0.1",
"author": "李四",
"description": "第一个webpack程序",
"keywords":["node.js","javascript"],
"repository": {
"type": "git",
"url": "url地址"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"url地址","email":"邮箱地址"},
"contributors":[{"name":"李四","email":"邮箱地址"}],
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "latest",
"mongoose": "~3.8.3",
"handlebars-runtime": "~1.0.12",
"express3-handlebars": "~0.5.0",
"MD5": "~1.2.0"
},
"devDependencies": {
"bower": "~1.2.8",
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-jshint": "~0.7.2",
"grunt-contrib-uglify": "~0.2.7",
"grunt-contrib-clean": "~0.5.0",
"browserify": "2.36.1",
"grunt-browserify": "~1.3.0",
}}
package.json中最重要的是name和version这两个属性,这两个属性是必须要有的,否则模块就会安装失败,这两个属性形成了一个npm模块的唯一标识符。模块中内容有改变时,模块版本号也应该要改变。
name属性:指的是模块的名称。命名规则:name不能以"_"或"."开头、不能含有大写字母、不能包含特殊字符、不能以nodejs的核心模块命名。
version属性:必须可以被npm依赖的一个node-semver模块解析。具体规则看下面的dependencies的模块
description属性:描述信息、方便别人知道你的模块作用,搜索的时候也有用到。
keywords属性:一个字符串数组,方便别人搜索到你的模块。
homepage属性:项目主页url地址。
bugs属性:别人使用了你的项目模块之中发现了问题,可以通过该属性里面的url或邮箱通知你。
license属性:你应该为你的模块制定一个协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制
author和contributors属性:是模块作者的相关信息。
repository属性:指定一个代码存放地址信息,对想要为你的项目贡献代码的人有帮助。里面的type可以是svn或git类型,url是仓库的地址。
scripts:scripts属性是一个对象,里边指定了项目的生命周期个各个环节需要执行的命令。key是生命周期中的事件,value是要执行的命令。
dependencies属性:生产环境需要依赖的模块列表。key是模块名称,value是版本范围,版本范围是一个字符,可以被一个或多个空格分割。dependencies value写法可以是:1、version 精确匹配版本 2、>version 必须大于某个版本 3、>=version 大于等于 4、<version 小于 5、<=versionversion 小于 6、~version "约等于" 7、^version
devDependencies属性:开发环境需要依赖的模块。跟dependencies差不多。
最终使用npm install会根据配置好的package.json自动下载依赖的模块。