依赖包锁定

Posted on 2019-07-22 10:09  !sylar  阅读(170)  评论(0编辑  收藏  举报

.强制固定package.json 里的依赖包版本号

 

符号    当运行 npm update 时,情况说明 

^1.5.1  【限制主版本号】允许安装版本号大于 1.5.1 但小于 2.0.0 版本的模块

~1.5.1  【限制次要版本】 允许安装版本号大于 1.5.1 但小于 1.6.0 版本的模块  

1.5.1   【精确控制】允许安装版本号大于 1.5.1   

 

强制固定版本号 即去掉版本号前的符号

 

 

2.使用npm-shrinkwrap锁定依赖

 

在开发阶段依赖稳定后,运行如下命令:

 

npm shrinkwrap

npm shrinkwrap --dev  # 将dev-dependencies计算在内

这会生成一个 npm-shrinkwrap.json 文件,该文件包含了你正在使用的模块的指定版本。

当运行 npm install时,该文件所指定的模块版本会覆盖 package.json 文件中所指定的版本。

 

 

注意问题:

 

shrinkwrap计算时是根据当前依赖安装的目录结构生成的,如果你不能保证package.json文件定义的依赖与node_modules下已安装的依赖是匹配、无冗余的,建议在执行shrinkwrap命令前清理依赖并重新安装(rm -rf node_modules && npm install)或精简依赖(npm prune)或手动删除node_modules文件夹重新安装依赖。

默认情况下,shrinkwrap只计算dependencies依赖,而不计算dev-dependencies,如果在生产环境也需要开发依赖或你的依赖分类不清晰,使用--dev参数生成shrinkwrap文件确保不会出问题。

 

需要升级某个依赖时应先执行 npm update xxx  之后依次执行npm shrinkwrap / npm shrinkwrap --dev   、npm install

并提交npm-shrinkwrap.json和package.json至版本库中

 

特别注意:

使用cnpm会忽略npm-shrinkwrap.json文件,这里推荐严格使用npm命令进行操作

我们应先执行npm换源操作

关于npm 换成淘宝镜像源

1.得到原本的镜像地址

npm get registry

https://registry.npmjs.org/

设成淘宝的

npm config set registry http://registry.npm.taobao.org/

yarn config set registry http://registry.npm.taobao.org/

2.换成原来的

npm config set registry https://registry.npmjs.org/