简介
在安装项目依赖的时候,为了提高安装速度,有时候会使用cnpm. 但是今天遇到一个问题 cnpm
没有安装package-lock.json里面的锁定版本,所以导致项目运行不起来!
问题:最近在使用cnpm安装package.json中的依赖后,发现项目运行不起来了!
描述:项目是使用react+ts+antd搭建的,运行之后就各种报ts的错误,一开始也以为是ts版本不兼容的问题,后来才发现是cnpm 安装依赖包的问题!(一般不使用cnpm安装,这个项目是使用了node-sass,所以本来为了省事才使用cnpm,没想到掉进这么大的坑里)
cnpm
优点:安装速度快
缺点:没办法保证每个同事安装依赖包的版本一致,就会出现依赖包版本不兼容的问题。
npm
优点:通过package-lock.json文件能够锁定版本。
缺点:安装速度慢。
以我这次的经历来说,项目里package.json文件要求的react-app-rewired版本
"react-app-rewired":"^2.1.3",
package-lock.json里的锁定的react-app-rewired版本
react-app-rewired": {
"version": "2.1.3",
"resolved":"https://registry.npm.taobao.org/react-app-rewired/download/react-app-rewired-2.1.3.tgz",
"integrity":"sha1-WuhYPsyfn5aNQLc10qu+hxN4pS8=",
"dev": true,
"requires": {
"cross-spawn":"^6.0.5",
"dotenv":"^6.2.0",
"semver":"^5.6.0"
},
}
但是用cnpm安装的版本是2.1.8,并没有根据package-lock.json里面的限制安装依赖。所以项目运行不起来!