JavaScript项目中锁定npm依赖包版本
前言:最近使用cnpm
安装项目依赖后,运行项目出现样式错乱问题。
描述:最近升级项目webpack
的时候,删除了node_modules
,重新安装了,cnpm install
,运行项目发现有些地方样式和之前样式不一样,样式变得错乱了,然后就开始找问题,找到运行正常的同事对比了package.json
发现版本信息都一样,问题就很奇怪,按理package.json
里面一样,node_modules
也一样才对。
然后把同事的node_modules
拷贝过来,结果运行正常,
为什么node_modules
会不一样?
和同事对比了依赖的版本,发现还是有差异的,左边是有错误的,右边是正确;
然后我安装成右边正确的版本,发现样式问题都好了。 为什么会造成安装的版本不一样? 图下是本地项目package.json
依赖
网上找了下 包里面的^
是什么意思,示例如下:
1.2.1
-匹配指定版本,这里是匹配1.2.1。^1.0.0
匹配 >=1.0.0 且 <2.0.0的版本。
^ 前缀意为 与指定的版本兼容 。
^ 前缀表示最左边的非0段不允许改变,该段之后的段可以为更高版,所以
^1.1.0 匹配 >=1.1.0 且 <2.0.0
^0.0.3 匹配 >=0.0.3 且 <0.0.4latest
当前发布版本。
这是一个标记(tag
,详见dist-tag
|npm Documentation
),默认情况下 npm install 安装的就是这个latest
标记。 常见的标记还有next stable beta canary
。^5.x
匹配 >=5.0.0 且 <6.0.0。 X, x 及 * 为通配符,版本号尾部省略的段等同于通配符,所以 匹配 >=0.0.0
1 匹配 >=1.0.0 且 <2.0.0
1.2 匹配 >=1.2.0 且 <1.3.0~0.1.1
匹配 >=0.1.1 且 <0.2.0。~
前缀意为 约等于版本 如果存在次版本号,则允许修订号为更高版,否则允许次版本号为更高版。~1
匹配 >=1.0.0 且 <2.0.0
匹配 >=0.0.0=3.0.0
同字面意义 >=3.0.0。< <= > >= =
多个表达式之间用 空格 分隔表示并集,用 || 分隔交集。1.30.2 - 2.30.2
匹配 >=1.30.2 且 <=2.30.2
原因已经找到了,怎么来解决这个问题?
我们安装依赖常用的方式有3种cnpm、npm、yarn
:
cnpm
:优点是速度快,缺点是没办法保证每个同事安装依赖的时候版本一致,就会出现依赖升级不兼容性问题npm
:优点是通过package-lock.json
文件能够锁定版本,缺点是安装速度慢。yarn
:优点是速度比npm
快、yarn.lock
文件能够锁定版本,缺点是学习成本相对高。
基于团队考虑,还是使用的yarn
来控制项目依赖的版本,yarn
使用起来和npm
大同小异,学习起来还是比较快的。问题解决了,开心。下面解释下yarn
常用方法,
yarn 使用方法
安装yarn
brew install yarn
安装项目的全部依赖
yarn || yarn install
添加依赖包 分别添加到 devDependencies
、peerDependencies
和 optionalDependencies
类别中:
yarn 类型npm install
yarn add [name] --dev
yarn add [name] --peer
yarn add [name] --optional
更新依赖
yarn upgrade [package] --dev
yarn upgrade [package]@[version] --dev
yarn upgrade [package]@[tag] --dev
删除依赖
yarn remove [package]
总结
一直都是使用cnpm来安装依赖,安装速度快,也比较方便,但是多人协作开发是容易出现问题,多人协作开发依赖版本应该保持一致。避免依赖版本不兼容项目出现问题。
JavaScript项目中锁定npm依赖包版本相关推荐
- Npm依赖检查版本及升级
问题溯源: 运行npm run build时候发现 ReferenceError: primordials is not defined.百度后报错原因可能是因为gulp版本过低导致.除了glup,其 ...
- idea如何打开pom引用依赖_IDEA使用Maven管理项目包,缺少pom文件中引入的依赖包...
1. 说在前面 最近和其他项目团队合作过程中,由于使用 idea 进行开发,之前也没有接触过太多,本着记录分享的心态,虽有此文.主要说两点:第一,使用 maven 构建项目的过程中,在 pom 文件引 ...
- IDEA项目External Libraries中没有Maven依赖包
今天在阅读老项目,不知道误点了哪个按钮,一片飘红.点击 Reimport All Maven Projects按钮,提示错误"Unable to import maven project: ...
- gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系
在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系.同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题.Building Andro ...
- 在maven项目中解决第三方jar包依赖的问题
在maven项目中解决第三方jar包依赖的问题 参考文章: (1)在maven项目中解决第三方jar包依赖的问题 (2)https://www.cnblogs.com/nuccch/p/6122938 ...
- unipapp 解决无法编译sass_如何解决Vue项目里面没有sassloader依赖包的问题
如何解决Vue项目里面没有sass-loader依赖包的问题 [报错问题] [分析问题] 说明项目里面没有sass-loader依赖包,需要安装dart-sass(即该软件包已被弃用,后来被重命名为& ...
- Node.js中的npm与包
npm与包 一.包 1.包是什么? 2.包是干啥的? 3.包的下载 二.npm初体验 1.在项目中安装包的命令 2.eg:对时间格式化 3.安装指定版本的包 三.包管理配置文件 1.如何记录项目中安装 ...
- Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包
场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
- 管理java版本号_微服务项目中如何管理依赖版本号?
本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 微服务项目搭建,到底要不要聚合工程? 在微服务项目 ...
- NPM依赖包版本号~和^的区别
~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 ...
最新文章
- Asp.net 关于错误提示 类型“XXX1”在未被引用的程序集中定义,必须添加对程序集XXX2的引用...
- zookeeper集群配置与配置文件详解
- AM8不能下任何载附件及所有聊天记录无法登记
- 手动通过tomcat加载一个war项目。
- 和硕看重物联网大势 程建中:从擅长领域出发
- ms access to mysql_Access转MySQL工具
- laravel 5.2 Auth用户认证教程
- 安装oracle时的x问题
- Ubuntu 16.04 软件安装
- 启动和停止数据库——停止例程
- 51Nod1019----归并排序(递归)
- matlab 数字水印攻击 jpeg压缩,基于DFT的数字水印技术研究及模拟.doc
- python2中文乱码
- 《基于运算放大器和模拟集成电路的电路设计》PDF云盘资源分享
- ThreadX视频教程第2期:通俗易懂的介绍Cortex-M内核的OS特性,双堆栈,非特权级,PendSV,SVC,Systick等,争取人人都可以掌握
- VB编程:取整函数Int、CInt、Fix区别-30
- 基于autojs7的皮皮虾极速版辅助
- 查看电脑当前使用的壁纸
- 书评与摘抄《如何阅读一本书》
- 【论文笔记】CVPR2019_SiamMask
热门文章
- 实用推荐系统:寻找有用的用户行为
- 博文视点读书节第九日丨大咖书单加倍放送!
- 31线性空间05——列空间和零空间、维数
- 06向量及其坐标表示、向量的方向角与方向余弦、向量组共线与共面的条件、向量的加法与数乘运算、向量组的线性组合、二维向量的基向量分解、三维向量的基向量分解、用坐标做向量的数乘
- Spark:相关错误总结
- windowsf进程管理器中进程解释
- 折线图后面无数据_老板让数据师分析二八法则,此图表完美解决,项目管理师专用图表...
- 8086cpu学习笔记(4):指令系统
- mysql日期查询_mysql 查询日期
- Linux中grep命令查找文件,Linux中使用grep命令搜索文件名及文件内容的方法