之前在博客中写过一篇关于 “ node.js的安装配置 ” 的文章,里面有提到利用 gulp watch 来监听文档的变化。其中需要 package.json 文件才能实现效果,所以下面总结一下。

1. 概述

每个项目根目录下都有一个 package.json 的文件,定义了这个项目所需要的各种模块,以及项目的配置信息。 npm install 的命令可以配置这个文件使自动下载所需要的模块及项目所需要的运行开发环境,自动将package.json中的模块安装到node-modules文件夹下。

package.json 文件内部就是一个 JSON 对象,对象的每个成员就是对项目的设置。

{
"name" : "test",
"version" : "0.0.1",
"author" : "wjy",
/* "contributors":[{"name":"李四","email":"lisi@example.com"}], */
"description" : "第一个node.js的测试程序",
"keywords":["node.js","javascript"],
"repository": {
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{
"url":"http://path/to/bug",
"email":"bug@example.com"
},
"scripts": {
"start": "node index.js",
"build": "gulp clear && gulp build && gulp minjs && gulp css"
},
"dependencies": {
"express": "latest",
"mongoose": "~3.8.3",
"handlebars-runtime": "^1.0.12",
"express3-handlebars": "0.5.0",
},
"devDependencies": {
"browser-sync": "^2.18.8",
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-ruby-sass": "^2.1.1",
"gulp-watch": "^4.3.11"
}
}

2.字段

现在根据上面的 package.json 的文件,逐个进行详细的解释。

1)name 是项目的名称

  • 命名规则不能以“_”和“.”开头,不能含有大写字母空格汉子,不能含有url非法字符,小于等于214字节。最好使用简短明了的英文,名字中不能与node和js的词。

2)version 是项目的版本号(遵循“大版本.次版本.小版本”的格式)。

上述两个属性是必须要的,否则模块无法安装。

3)author 是作者一个人, contributors 是一群人,里面有 nameurlemail 字段可选。

4)decription 项目描述,它会被 npm search 命令中搜索

5)keywords 关键字,它会被 npm search 命令中搜索

6)repository 指代码存放地址

7)license 指定一个许可证,让用户知道使用权限和限制

8)engines 指定工作的node版本,若不指定则表示所有版本node都可以

9)bugs 项目提交问题的url和邮箱,它会被 npm bugs 命令使用

10)scripts 指定运行脚本命令的npm命令行的缩写,比如 start 指定运行 npm run start 时所执行的命令。

11)dependencies 是项目运行所依赖的模块, devDependencies 指定项目开发所需要的模块。

12)main 是指定了加载的入口文件,这个字段的默认值是模块根目录下面的 index.js

其对象成员都是由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。对应的版本可以加上限制:

  • 指定版本 比如1.2.2,遵循“大版本.次版本.小版本”的格式,只安装指定版本
  • ~ + 指定版本 比如~1.2.2,表示安装1.2.x版本,不改变大版本和次版本
  • ^ + 指定版本 比如^1.2.2,表示安装1.x.x版本,不改变大版本。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
  • latest 安装最新版本

3.node编写package.json文件

package.json 文件可以根据上面的描述进行手动编写,同时也可以通过使用 npm init 命令来自动生成。这里需要使用 git 来实现,所以要先安装 GIT 软件,这里就不介绍。如果不安装 GIT 可以用命令提示符来执行。

依次完成 name , version , authon …… 的信息填写,这个时候会在目录下自动生成一个 package.json 的文档。

文档里的内容就是刚才填写的内容。

注意:自动生成的文档里可能缺少很多东西,这个可以根据项目需要,手动添加,比如: devDependencies 等信息

有了 package.json 文件,直接使用 npm install 命令就可以自动将 package.json 文档中的的模块安装到 node-modules 文件夹下面。

注意:如果 package.json 文档中没有仓库字段,那么 node-modules 文件夹里是空的。

如果一个模块不在package.json文件之中,可以单独安装这个模块,并使用相应的参数,将其写入package.json文件之中。

npm install express --save
npm install express --save-dev

上面代码表示单独安装 express模块,--save 参数表示将该模块写入 dependencies 属性,--save-dev 表示将该模块写入 devDependencies 属性。

有道笔记参考: http://note.youdao.com/noteshare?id=0ab299123923224547f834e987379569

package.json文档的更多相关文章

  1. Collection+JSON 文档

    Collection+JSON 文档 对于这个设计,我们不再以可能的状态和转移为起点,相反,我们将从一个集合状态响应中可能元素的顶层布局开始.从这一点入手,其他细节可以随着设计向超媒体类型最底层属性的 ...

  2. 不规范的json文档 转化成 java 对象的处理

    最近练习爬取数据,遇到了json文档中属性名称没有用双引号的情况,内容如下: 标准的json文档,属性名称都是带双引号的 最后写了个方法,替换属性名字 为 两头追加双引号的属性名字, 特别要注意,防止 ...

  3. QJsonDocument实现Qt下JSON文档读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QJsonDocument实现Qt下JSON文档读写     本文地址:http://tech ...

  4. [Xcode 实际操作]七、文件与数据-(17)解析JSON文档

    目录:[Swift]Xcode实际操作 本文将演示如何解析JSON文档. 项目中已添加一份JSON文档:menu.json { "menu": { "id": ...

  5. 使用System.Text.Json处理Json文档以及部分坑

    System.Text.Json处理Json文档需要用到JsonDocument,JsonElement,JsonProperty. JsonDocument就是一个表示Json文档的东西,JsonE ...

  6. C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档

    Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...

  7. 一个SQLServer中JSON文档型数据的查询问题

    近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据? 例如有个调查问卷记录表,记录每个问题的答案. 其结构示意如下(横表设计) Id user date Q1_Answer Q2_An ...

  8. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

  9. RapidJson读取json文档

    Json格式定义如下 Object: { _Name:_Data,... } 最后一项后面没有逗号 Array: [_Data,_Data,...] 最后一项后面没有逗号 _Name: String ...

随机推荐

  1. 寒假作业2——Pintia小作业及编程题

    编程题(电梯)       Click to Github       听华一大大说可以用回溯算法,熟练运用搜索引擎的我就百度了一下,琢磨了很多天以为自己会了,真的看到题目还是一脸懵逼(#`-_ゝ-) ...

  2. 第一次c++团队合作项目第三篇随笔

    这次终于想出来了上次问题的解决方法,就是用多态的方法,让小兵,建筑和英雄继承于Object类,通过指针能实现信息的传递. 同时我也完善了地图中每个Pane类的信息,包括每个格子的位置信息,state( ...

  3. WITH HINDSIGHT

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们是要做一个基于文件同步展示的语音软件:感谢之前的两次项目审核,我们定义与描述得很清楚: 我们达到目标 ...

  4. QMdiArea及QMdiSubWindow实现父子窗口及布局方法

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QMdiArea及QMdiSubWindow实现父子窗口及布局方法     本文地址:http ...

  5. python mysql查询结果乱码

    在connect()方法中传入charset='utf8'参数即可. conn = MySQLdb.connect(host=get_config_values('mysql', 'host'), p ...

  6. Building simple plug-ins system for ASP.NET Core(转)

    Recently I built plug-ins support to my TemperatureStation IoT solution web site. The code for .NET ...

  7. Simpsons’ Hidden Talents HDU - 2594(拓展kmp)

    Sample Input clinton homer riemann marjorie Sample Output 0 rie 3 看输出才题意...拓展kmp特征很明显嘛....注意开始就匹配到尾的 ...

  8. HBase多租户机制分析

    在HBase1.1.0发布之前,HBase同一集群上的用户.表都是平等的,没有优劣之分.这种’大同’社会看起来完美,实际上有很多问题.最棘手的主要有这么两个,其一是某些业务较其他业务重要,需要在资源有 ...

  9. 【BZOJ4197】【NOI2015】寿司晚宴(动态规划)

    [BZOJ4197][NOI2015]寿司晚宴(动态规划) 题面 BZOJ 从\([2,n]\)中选择两个集合(可以为空集),使得两个集合中各选一个数出来,都互质. 求方案数. 题解 对于\(500\ ...

  10. Cisco Smart Install远程命令执行漏洞

    0x01前言 在Smart Install Client代码中发现了基于堆栈的缓冲区溢出漏洞,该漏洞攻击者无需身份验证登录即可远程执行任意代码.cisco Smart Install是一种“即插即用” ...