npm和yarn哪里不一样
npm和yarn哪里不一样
npm是啥?
npm是javascript的包管理工具,是前端模块化下的一个标志性产物。简单地说,就是通过npm下载模块,复用已有的代码,提高工作效率。
其实在最早期的npm版本(npm v2),npm的设计可以说是非常的简单,在安装依赖的时候会将依赖放到 node_modules文件中。
安装机制
- npm install执行之后, 首先会检查和获取 npm的配置
优先级为: 项目级的.npmrc文件 > 用户级的 .npmrc文件 > 全局级的 .npmrc > npm内置的 .npmrc 文件 - 检查项目中是否有 package-lock.json文件
- 有, 检查 package-lock.json和 package.json声明的依赖是否一致:
- 一致, 直接使用package-lock.json中的信息,从网络或者缓存中加载依赖
- 不一致
npm version <= v5.0.x 根据package-lock文件下载,
npm version v5.1.5-v5.4.2 当package.json声明的依赖版本规范有符合的版本时,会忽略lock文件。安装package.json安装,并在安装后更新lock文件。
npm version >= v5.4.2 当package.json声明的依赖版本规范和lock文件中的版本对比,相符合则按照lock文件安装依赖,若不符合则按照package.json安装,并在安装后更新lock文件。 - 没有 根据package.json递归构建依赖树
- 有, 检查 package-lock.json和 package.json声明的依赖是否一致:
- 根据依赖树检索是否有缓存
- 有 直接获取缓存中的依赖解压到 node_modules
- 没有 从npm远端仓库下载包,校验包的完整性,同时添加到缓存中,解压到 node_modules
- 生成 package-lock.json 文件
缺点
- 速度慢
- 安装的无法保持一致性
- 存在嵌套地狱
- 输出冗长
优点
官方推荐
yarn是啥?
yarn 是一个由Facebook、Google、Exponent和Tilde构建的新的JavaScript包管理器。它的出现是为了解决历史上npm的某些不足
安装机制
- 检测(checking)
检测我们的项目中是否存在npm相关的文件,比如package-lock.json等;如果有,就会有相关的提示用户注意:这些文件可能会存在冲突。在这一步骤中 也会检测系统OS, CPU等信息 - 解析包(Resolving Packages)
析依赖树中的每一个包的信息- 获取首层依赖
dependencies、devDependencies、optionalDependencies - 获取包的依赖信息
遍历首层依赖的方式
- 获取首层依赖
- 获取包
- 链接包
- 构建包
优点
- 并行安装
- 离线安装
- 版本统一
- 输出简洁
- 更好的语义化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)