跳到主要内容

yarn

Yarn Workspace​

  • yarn workspace是yarn的内置功能
  • yarn workspace可以共享node_modules
  • 在package.json设置workspaces字段
js
"workspaces": [
"packages/*"
]

Yarn的优点​

相比npm的优点:

1、速度快 。速度快主要来自以下两个方面:

  • 并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 Yarn 是同步执行所有任务,提高了性能。
  • 离线模式:如果之前已经安装过一个软件包,用Yarn再次安装时之间从缓存中获取,就不用像npm那样再从网络下载了。

2、更好的语义化, yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。

3、更简洁的输出

npm和yarn的区别​

  • yarn采用了请求队列,类似并发池连接,能够更好的利用网络资源,同时引入了安装失败的重试机制
  • 都存在幽灵依赖问题

npm和yarn都采用了铺平方案,有什么问题吗​

1、幽灵依赖问题

  • 幽灵依赖问题,造成了非法访问

  • 幽灵依赖 就是在依赖里没有声明,但在代码里却可以引入 【如果 A 依赖 B, B 依赖 C,那么 A 当中是可以直接使用 C 的】

    • 这种非法访问,是有隐患的,万一哪天别的包不依赖了这个包,你却引入了这个包,就会导致报错

2、一个包多版本问题

  • 依赖包多个版本的时候,只会提升一个,其余的版本也还是会复制很多次,导致浪费磁盘空间
    • 提升一个,就是说这个包会提升到顶层目录中,其余包的版本还是以嵌套的方式复制
  • 所以就有了pnpm,pnpm就解决了这个问题