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也有办法解决.这篇博文 ...
随机推荐
- 内置函数zip()
zip有拉链的意思,zip函数像拉链一样将0个或多个可迭代对象按相同位置组合成一个zip对象,该zip对象的每个元素是由每个可迭代对象的相同位置的元素组成的元祖. 如果zip中有多个序列,而各序列的长 ...
- 解题:HNOI 2013 Cards
题面 除了不洗牌以外,每种洗牌方式的每个循环里的颜色必须一样,然后大力背包一下就好了.最后记得把不洗牌的方案也算进去 #include<cstdio> #include<cstrin ...
- 【POJ3250】Bad Hair Day 单调栈
题目大意:给定一个由 N 个数组成的序列,求以每个序列为基准,向右最大有多少个数字都比它小. 单调栈 单调栈中维护的是数组的下标. 单调栈在每个元素出栈时统计该出栈元素的答案贡献或对应的值. 单调栈主 ...
- LeetCode 8 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- Python 文件解压缩
shutil对压缩包的处理是通过调用zipFile和tarFile两个模块来进行的. import zipfile # zipfile压缩 z = zipfile.ZipFile('ss.zip', ...
- Java 存储和读取 oracle CLOB 类型字段的实用方法
import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...
- OpenResty 扩展库(二)lua-resty-template
Lua和OpenResty的模板引擎(HTML) 模板语法 您可以在模板中使用以下标签: {{expression}},写入表达式的结果 - html转义 {*expression*},写入表达结果 ...
- python 玩具代码
脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python ...
- 基于序列化技术(Protobuf)的socket文件传输
好像好久都没更博文了,没办法,最近各种倒霉事情,搞到最近真的没什么心情,希望之后能够转运吧. 言归正传,这次我要做的是基于序列化技术的socket文件传输来无聊练一下手. 一.socket文件传输 之 ...
- Java使用WebSocket
网页端的消息推送,一般有以下方式: 轮询方式:客户端定时向服务端发送ajax请求,服务器接收到请求后马上返回消息并关闭连接. 优点:后端程序编写比较容易. 缺点:TCP的建立和关闭操作浪费时间和带宽, ...