Node.js包的依赖及版本号(转)
原文: http://www.cnphp6.com/archives/64130
Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能。例如下面就是一个例子
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "main.js",
"keywords": [
"test"
],
"author": "wade",
"license": "MIT",
"dependencies": {
"express": "^4.10.1"
},
"devDependencies": {
"jslint": "^0.6.5"
}
}
dependencies与devDependencies:
一个node package有两种依赖,一种是dependencies,另一种是devDependencies,其中前者依赖的项是正常运行该包时所需要的依赖项,而后者则是开发的时候需要的依赖项,像一些进行单元测试之类的包。简单来记就是下面的
“dependencies”: {} //生产环境
“devDependencies”: {} //开发环境
在package.json所在目录执行npm install的时候,devDependencies里面的模块也会被安装的。如果我们只想安装dependencies里面的包,可以执行
npm install –production
如果只安装devDependencies,可以执行
npm install –dev
同理,使用npm install node_module –save自动更新dependencies字段值,使用npm install node_module –save-dev自动更新devDependencies字段值。
版本号:
每一个模块后面对应的就是他的版本号,如”^4.10.1″。下面是几个版本的表达式
| 表达式 | 版本范围 |
| >=1.2.7 | 大于等于1.2.7 |
| >=1.2.7 <1.3.0 | 1.2.7,1.2.8,1.2.9 |
| 1.2.3 – 2.3.4 | >=1.2.3 <=2.3.4 |
| 1.2 – 2.3.4 | >=1.2.0 <=2.3.4 |
| 1.2.3 – 2.3 | >=1.2.3 <2.4.0 |
| 1.2.3 – 2 | >=1.2.3 <3.0.0 |
| * | >=0.0.0 |
| 1.x(等价于1.X) | >=1.0.0 <2.0.0 |
| 1.2.x | >=1.2.0 <1.3.0 |
| “”(等价于*) | >=0.0.0 |
| 1(等价于1.x.x) | >=1.0.0 <2.0.0 |
| 1.2(等价于1.2.x) | >=1.2.0 <1.3.0 |
| ~1.2.3(>=1.2.3 <1.(2+1).0) | >=1.2.3 <1.3.0 |
| ~1.2(>=1.2.0 <1.(2+1).0) | >=1.2.0 <1.3.0 |
| ~1(>=1.0.0 <(1+1).0.0) | >=1.0.0 <2.0.0 |
| ~0.2.3(>=0.2.3 <0.(2+1).0) | >=0.2.3 <0.3.0 |
| ~0.2(>=0.2.0 <0.(2+1).0) | >=0.2.0 <0.3.0 |
| ~0(>=0.0.0 <(0+1).0.0) | >=0.0.0 <1.0.0 |
| ~1.2.3-beta.2 | >=1.2.3-beta.2 <1.3.0 |
| ^1.2.3 | >=1.2.3 <2.0.0 |
| ^0.2.3 | >=0.2.3 <0.3.0 |
| ^0.0.3 | >=0.0.3 <0.0.4 |
| ^1.2.3-beta.2 | >=1.2.3-beta.2 <2.0.0 |
| ^0.0.3-beta | >=0.0.3-beta <0.0.4 |
| ^1.2.x | >=1.2.0 <2.0.0 |
| ^0.0.x | >=0.0.0 <0.1.0 |
| ^0.0 | >=0.0.0 <0.1.0 |
| ^1.x | >=1.0.0 <2.0.0 |
| ^0.x | >=0.0.0 <1.0.0 |
参考文献:
http://stackoverflow.com/questions/22343224/difference-between-tilde-and-caret-in-package-json
https://www.npmjs.org/doc/misc/npm-config.html#production
Node.js包的依赖及版本号(转)的更多相关文章
- Node.js包管理器Yarn的入门介绍与安装
FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...
- Node.js包(JXcore)
Node.js的代码是开放的,并准备好被复制像任何其他Javascript代码.但现在它不可能的了.JXcore 这是一个开源项目,引入了包装和源文件和其他资源加密成JX包一个独特的功能. 考虑大型项 ...
- 9.Node.js 包管理器npm
npm 是 Node.js 官方提供的包管理工具, 用于 Node.js包的发布.传播.依赖控制 安装 express ==> 流行的基于Node.js的Web开发框架,可以快速地搭建一个完整 ...
- Node.js包管理器:
Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...
- 《Node.js 包教不包会》
<Node.js 包教不包会> 为何写作此课程 在 CNode(https://cnodejs.org/) 混了那么久,解答了不少 Node.js 初学者们的问题.回头想想,那些问题所需要 ...
- Node.js 包管理器 NPM 讲解
包管理器又称软件包管理系统,它是在电脑中自动安装.配制.卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用.对于我们业务开发也很受益,相同的东西不必重复去造轮子. 每个工具或 ...
- node.js - 包、express
首先,要先在这里分享一下我的喜悦,从昨天开始其实一直都在喜悦当中的,我收到了我的第一份offer,这感觉不摆了,比第一桶金都还舒服,虽然我还没收到第一桶金哈哈,不过offer都得了应该也快了. 今天的 ...
- npm --- Node.js包管理器
目录 1. 安装Node.js 2. 运行npm 3. npm介绍 3.1 安装插件 3.2 更新插件 3.3 卸载插件 3.4 查看当前目录中的插件列表 4. 使用cnpm 4.1 安装 npm( ...
- Node.js的循环依赖
我们知道在实际编程过程中,要尽可能的减少或者规避循环依赖情况的发生.但在现实环境中,有时却不得不产生循环依赖.Node.js不提倡使用循环依赖,但真有如此情况发生时Node.js也有办法解决.这篇博文 ...
随机推荐
- ssh框架配置过程
1.pom.xml配置依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...
- vi基础学习总结
标签(空格分隔): vi 总结 vi是几乎所有类Unix/Linux系统下都默认装有的常用文本编辑工具.本文记录初学vi的一些小知识. 0.界面模式 在命令行使用"vi"编辑文档时 ...
- 【leetcode】Path Sum2
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- Java体验的重点难点-----总结
1.关于JVM原理:http://www.cnblogs.com/zhanglei93/p/6590609.html 2.关于垃圾收集机制:http://www.cnblogs.com/zhangle ...
- JavaScript--Dom间接选择器
一.Dom间接选择器 间接查找的属性 parentNode // 父节点 childNodes // 所有子节点 firstChild // 第一个子节点 lastChild // 最后一个子节点 n ...
- poj 2438 Children's Dining
http://poj.org/problem?id=2438 题意: 有2*N个人要坐在一张圆桌上吃饭,有的人之间存在敌对关系,安排一个座位次序,使得敌对的人不相邻. 假设每个人最多有N-1个敌人.如 ...
- 本日吐槽!“人傻钱多”的P2P公司是否是程序员的合适选择(群聊天记录的娱乐)
这个题目“P2P的职位是否是程序员的合适选择”这个问题本身是没啥可以吐槽的 但是每当我们讨论那种类型的公司工资愿意给前端工程师开的最高的时候,P2P这个行业被第一个提出了 目前我收到过面试的企业类型千 ...
- [转载]Juicer – 一个Javascript模板引擎的实现和优化
http://ued.taobao.org/blog/2012/04/juicer-%E4%B8%80%E4%B8%AAjavascript%E6%A8%A1%E6%9D%BF%E5%BC%95%E6 ...
- TED_Topic8:How to control someone else's arm with your brain
By Greg Gage (Neuroscientist) Greg Gage is on a mission to make brain science accessible to all. In ...
- Crypto 模块安装
crypto模块的目的是为了提供通用的加密和哈希算法. AES是一种常用的对称加密算法,加解密都用同一个密钥.crypto模块提供了AES支持,但是需要自己封装好函数,便于使用 方法一: 1,到 ht ...