npm依赖管理java_npm依赖管理

semver

npm 依赖管理的一个重要特性是采用了语义化版本 (semver) 规范,作为依赖版本管理方案。

版本号

semver 约定一个包的版本号必须包含3个数字,格式必须为 MAJOR.MINOR.PATCH, 意为 主版本号.次版本号.修订版本号.

MAJOR 主版本号,对应大的版本号迭代,做了不兼容旧版的修改时要更新 MAJOR 版本号

MINOR 次版本号,对应小版本迭代,发生兼容旧版API的修改或功能更新时,更新MINOR版本号

PATCH 修订号,对应修订版本号,一般针对修复 BUG 的版本号

例如:

0.y.z 表示开发阶段,一切可能随时改变,非稳定版。

1.0.0 界定此版本为初始稳定版,后面的一切更新都基于此版本进行修改

在常规仅包含数字的版本号之外,semver 还允许在 MAJOR.MINOR.PATCH 后追加 - 后跟点号分隔的标签,作为预发布版本标签 - Prerelese Tags,通常被视为不稳定、不建议生产使用的版本。

b47b6fc3a7041ad1f3dc27d0312c28ff.png

例如:

1.0.0-alpha

1.0.0-beta.1

版本限定

在进行包管理时,为了保证安装依赖的兼容性,必须对依赖包版本进行限定.

版本限定的语法简述为为[范围描述]。

1.范围描述

范围描述可选,必须配和版本描述确定范围,无法独立存在。

< 小于某一版本号

<= 小于等于某一版本号

> 大于某一版本号

>= 大于等于某一版本号

= 等于某一版本号,没有意义和直接写该版本号一样

- 某个范围,语法为 -

例如:

1.2.3-2 支持 >=1.2.3 <3.0.0 的版本

1.x.1 支持 >=1.0.1 <1.1.0 的版本

1 表示 >=1.0.0 <2.0.0 其余任意位置为空相似

1.0 >= 1.0.0 < 1.1.0

~,^

~,^ 的表述需要结合具体的包管理工具和版本号规则来确定,但是对于一般使用记住如下原则:

^ 是确保版本兼容性时,默认对次版本号的限定约束

~ 是确保版本兼容性时,默认对补丁号的约束

例如:

~1.1.1 >=1.1.1 <1.2.0

~1.1 >=1.1.0 <1.2.0

~1 >=1.0.0 <2.0.0

^1.1.1 >=1.1.1 <2.0.0

^0.1.1 >=0.1.1 <0.2.0

^0.0.1 >=0.0.1 <0.0.2

2.版本号描述

* 通配符,类似 glob 模式 *

x,X 约等于 * 号,通常用于次版本和补丁的通配

例如:

* 支持 >= 0.0.0 的版本

x 支持 >= 0.0.0 的版本

依赖维护

检查过期版本

npm outdated

npm outdated [[/] ...]

8f6cafc6000d9c100677a4e30ed2dfd1.png

版本删除

npm uninstall [-g] [--save] [-dev] //卸载模块

npm install

npm install/i [--force] //安装某个包

npm i //当存在package.json时,使用命令可全部安装包

npm i @1.0.0 //安装指定版本的模块

npm i @latest //安装最新版本

npm i =0.1.0 <0.2.0"

npm i

-S, --save 安装包信息将加入到dependencies(生产阶段的依赖)

-D, --save-dev 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它

-O, --save-optional 安装包信息将加入到optionalDependencies(可选阶段的依赖)

-E, --save-exact 精确安装指定模块版本

-P, --save-prod, 添加dependencies 里面所有的包

^是npm默认版本符号,用npm i --save, npm会自动在package.json中添加。如果使用--save-exact,就不会有任何符号。

在生产环境,使用npm install --production安装 dependencies 部分的模块;

在开发环境,npm i ,安装所有devDependencies 和 dependencies里面的模块;

全局安装与本地安装

npm install/i //本地安装

npm install/i --global/-g //全局安装

区别

1.安装位置

npm root -g //查看全局node_modules路径

npm root //查看本地node_modules路径

全局安装:一般在 Users用户名AppDataRoaming 目录下。

本地安装:一般安装在指定项目的node_modules文件夹下。

2.调用方式

全局安装:用户可以在命令行中直接运行该包支持的命令。

本地安装:需在项目中引用。

修改默认全局目录与缓存

npm c get prefix //获取npm目录

npm c get cache //获取缓存目录

npm c set prefix //获取npm目录

npm c set cache //获取缓存目录

npm update

npm update -g //升级全局安装的指定模块

npm update //升级当前目录下的指定模块

npm update --save-dev //升级当前目录下全部模块

package-lock 文件

把npm更新到v5.x.x以后, npm i会出现一种新的自动生成文件 - package-lock.json。

package-lock.json简言之,就是锁定安装时包的版本号。

禁用

npm c set package-lock false

package.json与package-lock.json版本相同情况下,npm i无效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值