前言:最近使用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.4

  • latest 当前发布版本。
    这是一个标记(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

添加依赖包 分别添加到 devDependenciespeerDependenciesoptionalDependencies 类别中:

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依赖包版本相关推荐

  1. Npm依赖检查版本及升级

    问题溯源: 运行npm run build时候发现 ReferenceError: primordials is not defined.百度后报错原因可能是因为gulp版本过低导致.除了glup,其 ...

  2. idea如何打开pom引用依赖_IDEA使用Maven管理项目包,缺少pom文件中引入的依赖包...

    1. 说在前面 最近和其他项目团队合作过程中,由于使用 idea 进行开发,之前也没有接触过太多,本着记录分享的心态,虽有此文.主要说两点:第一,使用 maven 构建项目的过程中,在 pom 文件引 ...

  3. IDEA项目External Libraries中没有Maven依赖包

    今天在阅读老项目,不知道误点了哪个按钮,一片飘红.点击 Reimport All Maven Projects按钮,提示错误"Unable to import maven project: ...

  4. gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系

    在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系.同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题.Building Andro ...

  5. 在maven项目中解决第三方jar包依赖的问题

    在maven项目中解决第三方jar包依赖的问题 参考文章: (1)在maven项目中解决第三方jar包依赖的问题 (2)https://www.cnblogs.com/nuccch/p/6122938 ...

  6. unipapp 解决无法编译sass_如何解决Vue项目里面没有sassloader依赖包的问题

    如何解决Vue项目里面没有sass-loader依赖包的问题 [报错问题] [分析问题] 说明项目里面没有sass-loader依赖包,需要安装dart-sass(即该软件包已被弃用,后来被重命名为& ...

  7. Node.js中的npm与包

    npm与包 一.包 1.包是什么? 2.包是干啥的? 3.包的下载 二.npm初体验 1.在项目中安装包的命令 2.eg:对时间格式化 3.安装指定版本的包 三.包管理配置文件 1.如何记录项目中安装 ...

  8. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  9. 管理java版本号_微服务项目中如何管理依赖版本号?

    本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 微服务项目搭建,到底要不要聚合工程? 在微服务项目 ...

  10. NPM依赖包版本号~和^的区别

    ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 ...

最新文章

  1. Asp.net 关于错误提示 类型“XXX1”在未被引用的程序集中定义,必须添加对程序集XXX2的引用...
  2. zookeeper集群配置与配置文件详解
  3. AM8不能下任何载附件及所有聊天记录无法登记
  4. 手动通过tomcat加载一个war项目。
  5. 和硕看重物联网大势 程建中:从擅长领域出发
  6. ms access to mysql_Access转MySQL工具
  7. laravel 5.2 Auth用户认证教程
  8. 安装oracle时的x问题
  9. Ubuntu 16.04 软件安装
  10. 启动和停止数据库——停止例程
  11. 51Nod1019----归并排序(递归)
  12. matlab 数字水印攻击 jpeg压缩,基于DFT的数字水印技术研究及模拟.doc
  13. python2中文乱码
  14. 《基于运算放大器和模拟集成电路的电路设计》PDF云盘资源分享
  15. ThreadX视频教程第2期:通俗易懂的介绍Cortex-M内核的OS特性,双堆栈,非特权级,PendSV,SVC,Systick等,争取人人都可以掌握
  16. VB编程:取整函数Int、CInt、Fix区别-30
  17. 基于autojs7的皮皮虾极速版辅助
  18. 查看电脑当前使用的壁纸
  19. 书评与摘抄《如何阅读一本书》
  20. 【论文笔记】CVPR2019_SiamMask

热门文章

  1. 实用推荐系统:寻找有用的用户行为
  2. 博文视点读书节第九日丨大咖书单加倍放送!
  3. 31线性空间05——列空间和零空间、维数
  4. 06向量及其坐标表示、向量的方向角与方向余弦、向量组共线与共面的条件、向量的加法与数乘运算、向量组的线性组合、二维向量的基向量分解、三维向量的基向量分解、用坐标做向量的数乘
  5. Spark:相关错误总结
  6. windowsf进程管理器中进程解释
  7. 折线图后面无数据_老板让数据师分析二八法则,此图表完美解决,项目管理师专用图表...
  8. 8086cpu学习笔记(4):指令系统
  9. mysql日期查询_mysql 查询日期
  10. Linux中grep命令查找文件,Linux中使用grep命令搜索文件名及文件内容的方法