cnpm
安装项目依赖后,运行项目出现样式错乱问题。webpack
的时候,删除了node_modules
,从新安装了,cnpm install
,运行项目发现有些地方样式和以前样式不同,样式变得错乱了,而后就开始找问题,找到运行正常的同事对比了package.json
发现版本信息都同样,问题就很奇怪,按理package.json
里面同样,node_modules
也同样才对。node_modules
拷贝过来,结果运行正常,node_modules
会不同?和同事对比了依赖的版本,发现仍是有差别的,左边是有错误的,右边是正确;node
package.json
依赖
网上找了下 包里面的^
是什么意思,示例以下:webpack
1.2.1
-匹配指定版本,这里是匹配1.2.1。web
^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.4npm
latest
当前发布版本。
这是一个标记(tag
,详见 dist-tag
|npm Documentation
),默认状况下 npm install 安装的就是这个 latest
标记。 常见的标记还有 next stable beta canary
。json
^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。code
~
前缀意为 约等于版本 若是存在次版本号,则容许修订号为更高版,不然容许次版本号为更高版。cdn
~1
匹配 >=1.0.0 且 <2.0.0
匹配 >=0.0.0
blog
=3.0.0
同字面意义 >=3.0.0。
ci
< <= > >= =
多个表达式之间用 空格 分隔表示并集,用 || 分隔交集。
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
经常使用方法,
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]