- 建议包管理器使用优先级:pnpm > yarn > npm > cnpm
工具 | 安装依赖包(-s ,-D,-g 根据情况使用) | 初始化(不加y逐项初始化配置) | 卸载依赖包(-g全局卸载) |
---|---|---|---|
npm | npm install xxx -s(生产依赖) -D(开发依赖) -g(全局) | npm init -y(全部yes) | npm uninstall xxx -g(全局) |
cnpm | cpm install xxx -s(生产依赖) -D(开发依赖) -g(全局) | cnpm init -y(全部yes) | cnpm uninstall xxx -g(全局) |
npx | npx xxx -g(全局) | 无 | 无 |
yarn | yarn add xxx -s(生产依赖) -D(开发依赖) -g(全局) | yarn init -y(全部yes) | yarn remove xxx -g(全局) |
pnpm | pnpm add xxx -s(生产依赖) -D(开发依赖) -g(全局) | pnpm init -y(全部yes) | pnpm remove xxx -g(全局) |
- npm常用命令
查询当前配置的镜像 | 设置成淘宝镜像 |
---|---|
npm get registry | yarn config get registry |
npm config set registry https://registry.npm.taobao.org | yarn config set registry https://registry.npm.taobao.org |
npm config set registry https://registry.npm.taobao.org
yarn config set registry https://registry.npm.taobao.org
- pnpm &yarn & npm & cnpm包管理工具之间的区别
包管理工具 | 优点 | 缺点 | 可以替代的方案 | 注意事项 |
---|---|---|---|---|
npm | - 具有丰富的模块生态系统 - 社区活跃,更新迭代快 - 官方的默认工具,使用广泛 | - 安装依赖速度慢 - 会有多个版本的包存在 | yarn、pnpm | 由于npm在安装依赖过程中可能会出现网络问题,因此注意备份和恢复本地缓存 |
cnpm | - 由于镜像源国内化,因此安装速度较快 | - 镜像源不稳定,容易出现问题 - 存在部分包安装失败的情况 | taobao-npm、yarn | 由于cnpm可能存在不稳定性问题,建议在尝试使用之前先备份好本地缓存 |
yarn | - 稳定性高,下载速度快 - 版本锁定,安装版本统 - 可以并行下载多个包 -缓存机制,如果之前已经安装过一个软件包,用Yarn再次安装时之间从缓存中获取,就不用像npm那样再从网络下载了 | - 模块生态相比npm较弱 | npm、pnpm | yarn需要配置registry以确保从正确的镜像源下载包 |
pnpm | - 安装速度快,同时占用空间少 -pnpm继承了yarn的所有优点,包括离线模式和确定性安装 - 可以与npm完全兼容 | - 相对较新,缺乏历史纪录 - 存在兼容性问题 | npm、yarn | pnpm需要在使用之前进行正确的配置和安装,避免出现奇怪的兼容性问题 |
版本号问题
-
1.2.3 1 代表的就是主版本(主版本的升级一般是重大的变更,相互之间的依赖都会不小的影响,比如: webpackV5 不少构建工具版本不同步会出现进程失败的问题) 2 代表的就是次版本(一般是些新功能不怎么影响,无感知的)3 代表的补丁版本(bug)
-
~1.2.3: ""代表只更新补丁版本,比如当前:1.2.0 再次更新 如果有最新的 1.2.3 就会更新到 1.2.3版本 1.3.0则不会自动更新
-
^1.2.3: ""代表更新此版本和补丁版本,比如当前:1.2.0 再次更新 如果有最新的1.3.2 就会更新到 1.3.2版本 2.0.0则不会自动更新
-
1.2.3:什么都不写就是锁定版本,指定只是用当前版本不会自动更新最新版本。
package.json 和 package-lock.json package-lock.json:当前node_modules中的版本就是按照lock.json中的锁定版本进行安装的依赖。
npm 旧版本之前是不会生成package-lock.json的,这是之前和yarn区别比较大的地方,因为yarn是有yarn-lock的。(后续npm推出lock后其实和yarn的区别并不是很大了,唯一的区别就是快慢的问题 Yarn是并行安装依赖的 Npm是串行安装)