Cordova CLI源码分析(二)——package.json
每个包需要在其顶层目录下包含一个package.json文件,该文件不仅是包的说明,也影响npm安装包时的配置选项
更多参数详见参考文档https://npmjs.org/doc/json.html
{
"name": "cordova",
"version": "3.0.4",
"preferGlobal": "true",//如果安装包是作为命令行应用程序,应该全局模式安装,如果用户使用本地模式安装,则警告提醒
"description": "Cordova command line interface tool",
"main": "cordova",
//表示Node.js在调用某个模块的时候,将寻找main指向的路径作为模块的接口,在这里Node将寻找同目录下的cordova文件,并尝试从它那加载模块;
//如果没有cordova,Node还是会尝试寻找cordova.js或者cordova.node作为包的接口。
//相当于这是初始化函数,返回此文件中export的对象内容
"engines":{
"node":">=0.9.9"
//指定使用node的版本
},
"engineStrict":true,
//如果确定模块只能能在engines 参数指定的版本正常工作,则设置此参数
"bin": {
"cordova": "./bin/cordova"
//用户在命令行输入时,解析参数执行此文件
cordova文件
#!/usr/bin/env node
var CLI = require('../src/cli');
new CLI(process.argv);
},
"scripts": {
"test": "jasmine-node --color spec"
//存储一些默认运行命令脚本信息
//cordova test 执行 jasmine-node --color spec
},
"repository": {
"type": "git",
"url": "https://git-wip-us.apache.org/repos/asf/cordova-cli.git"
// 存储位置
},
"bugs":{
"url" : "https://issues.apache.org/jira/browse/CB",
"email" : "dev@cordova.apache.org"
},
"keywords": [
"cordova",
"client",
"cli"
],
"dependencies": {
"colors":">=0.6.0",
"elementtree":"0.1.3",
"plugman":"0.10.0",
"plist":"0.4.x",
"xcode":"0.5.1",
"express":"3.0.0",
"shelljs":"0.1.2",
"ncallbacks":"1.0.0",
"request":"2.22.0",
"ripple-emulator":"0.9.18",
"semver":"1.1.0",
"glob":"3.2.x",
"follow-redirects":"0.0.x",
"prompt":"0.2.7",
"tar":"0.1.x",
"open": "0.0.3",
"npm":"1.3.x",
"optimist":"0.6.0"
},
/*依赖模块列表
version 版本号必须精确匹配
>version 必须大于当前版本号
>=version 必须大于等于
<version 小于
<=version 小于等于
~1.2.3 := >=1.2.3-0 <1.3.0-0 1.3.0-beta 不满足 ~1.2.3支持条件
~1.2 := >=1.2.0-0 <1.3.0-0 以1.2开始的版本
1.2.x := >=1.2.0-0 <1.3.0-0 以1.2开始的版本
~1 := >=1.0.0-0 <2.0.0-0 以1开始的版本
1.x := >=1.0.0-0 <2.0.0-0 以1开始的版本
1.2.x 1.2.0, 1.2.1,等,不超过 1.3.0
http://... 见链接地址
* 匹配任意版本
"" 匹配任意版本
version1 - version2 等价于 >=version1 <=version2.
range1 || range2 range1 或 range2均可
git... 见git地址
user/repo见 'GitHub ' 地址
*/
"devDependencies": {
"jasmine-node":"1.8.x"
},
/ /开发阶段使用的模块,在用户使用时不需要依赖的模块
"author": "Anis Kadri",
//开发者
"contributors": [
{"name": "Brian LeRoux","email": "b@brian.io"},
{"name": "Fil Maj", "email": "maj.fil@gmail.com"},
{"name": "Mike Reinstein", "email":"reinstein.mike@gmail.com"},
{"name": "Darry Pogue", "email":"darryl@dpogue.ca"},
{"name": "Michael Brooks", "email":"michael@michaelbrooks.ca"},
{"name": "Braden Shepherdson", "email":"braden@chromium.org"},
{"name": "Gord Tanner", "email":"gtanner@gmail.com"},
{"name": "Tim Kim", "email": "timk@adobe.com"},
{"name": "Benn Mapes", "email": "Benn.Mapes@gmail.com"},
{"name": "Michael Wolf", "email": "Michael.Wolf@Cynergy.com"},
{"name": "Andrew Grieve", "email": "agrieve@chromium.org"},
{"name": "Bryan Higgins", "email": "bhiggins@blackberry.com"},
{"name": "Don Coleman", "email": "dcoleman@chariotsolutions.com"},
{"name": "Germano Gabbianelli", "email": "tyron.mx@gmail.com"},
{"name": "Ian Clelland", "email": "iclelland@chromium.org"},
{"name": "Lucas Holmqust", "email": "lholmqui@redhat.com"},
{"name": "Matt LeGrand", "email": "mlegrand@gmail.com"},
{"name": "Michal Mocny", "email": "mmocny@gmail.com"},
{"name": "Sam Breed", "email": "sam@quickleft.com"},
{"name": "Tommy-Carlos Williams", "email": "tommy@devgeeks.org"},
{"name": "Rubén Norte", "email": "rubennorte@gmail.com"}
//贡献者人员信息
],
"license": "Apache version 2.0"
}
Cordova CLI源码分析(二)——package.json的更多相关文章
- Cordova CLI源码分析(三)——初始化
本部分主要涉及以下三个文件 1 cli.js 2 cordova.js 3 events.js 通过前一篇package.json的分析,可以知道,当命令行执行cordova相关命令时,首先调用mai ...
- Cordova CLI源码分析(四)——创建工程
在第一篇分析我们曾经举例,创建一个新工程, cordova create hello hellotest com.xxx.hellotest cli.js文件分析命令行参数后,会走到 else if ...
- Cordova CLI源码分析(一)——简介
本系列文章分析基于node.js的命令行工具Cordova CLI,所以如果对node.js基础不是很了解,建议参考http://nodejs.gamesys.net/node-js提供的基础教程 文 ...
- 框架-springmvc源码分析(二)
框架-springmvc源码分析(二) 参考: http://www.cnblogs.com/leftthen/p/5207787.html http://www.cnblogs.com/leftth ...
- Vue源码分析(二) : Vue实例挂载
Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...
- 多线程之美8一 AbstractQueuedSynchronizer源码分析<二>
目录 AQS的源码分析 该篇主要分析AQS的ConditionObject,是AQS的内部类,实现等待通知机制. 1.条件队列 条件队列与AQS中的同步队列有所不同,结构图如下: 两者区别: 1.链表 ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- Tomcat源码分析二:先看看Tomcat的整体架构
Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server.Service.Conn ...
- 十、Spring之BeanFactory源码分析(二)
Spring之BeanFactory源码分析(二) 前言 在前面我们简单的分析了BeanFactory的结构,ListableBeanFactory,HierarchicalBeanFactory,A ...
随机推荐
- webdynpro tree控件使用
1. 首先创建一个TREE控件 2. 在Tree下面创建一个TREE NODE TYPE ,node type 是可以继续展开的,而Item type是无法展开的. 3. 创建node.,下面 ...
- 2015 Multi-University Training Contest 1
最近真是太废柴了,题没做几道,也没学什么新知识,多校做了三场也没总结~诶!好好学吧! 多校第一场感觉被完虐...orz... Hdu 5288 OO’s Sequence 题目链接:http://ac ...
- WITH+HInt MATERIALIZE 不见得有效
那个要多次调用才需要物化的. 只调用一次,物化没用 MATERIALIZE 语法:MATERIALIZE 描述:指示优化器将内联视图实体化————执行过程中会创建基于视图的临时表. with dd ...
- Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObje ...
- CURD演示 2
<?php class UserAction extends Action{ public function index(){ echo "你好!"; $m=M('user' ...
- (step6.3.2)hdu 1068(Girls and Boys——二分图的最大独立集)
题目大意:第一行输入一个整数n,表示有n个节点.在接下来的n行中,每行的输入数据的格式是: 1: (2) 4 6 :表示编号为1的人认识2个人,他们分别是4.6: 求,最多能找到多少个人,他们互不认识 ...
- 2388 Who's in the Middle(简单排序)
训练计划的第一个问题,首先从水问题开始:排序的数组,中间数则输出. http://poj.org/problem?id=2388 冒泡排序: #include <iostream> usi ...
- 字符串转换为整数”123“->123
字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给 ...
- cocos2d-x中使用JNI的调用JAVA方法
用cocos2d-x公布Android项目时.都应该知道要用JAVA与C/C++进行交互时会涉及到JNI的操作(Java Native Interface).JNI是JAVA的一个通用接口.旨在本地化 ...
- Opencv各个版本的万能头文件
每次下载opencv的新版本时,都需要重新写头文件,更改链接库配置,很麻烦有木有?下面这个头文件是我在别人的代码中淘出来的,很不错,与大家分享~(具体作者忘记了,不好意思啊) 作者很巧妙地利用Open ...