前言

首先要说的是, yarn + lerna 的组合已经是现在 monorepo 的通用方案,也是功能最多,最火的方案,使用这套方案绝对是正确的。

但是其上手存在一定的门槛,相比 pnpm 这种自带 workspace 的方案,在效率上不能匹敌。

问题

下面谈论几个为什么不使用 yarn + lerna 方案的理由。

认清 pnpm 的小而简

pnpm 作为一个新颖的依赖管理工具,无论是兼容性,还是功能丰富度,社区生态,都是非常弱小的,无论打出什么新牌,都很难与 yarn 的霸主地位抗衡,而他作为一个 “小” 的工具,也存在一些方便,效率高的点。

lerna 功能往往不是所需

lerna 这样一个 monorepo 管理工具,包括了很多的功能。

比如很多时候我们并不需要统一版本发布管理,像 vue 这样一个大型开源库,他需要所有子包都统一的版本发布管理,但是我们个人很多时候是不需要的,所以像 lerna version 这种命令其实是多余的,为何不舍弃复杂从简?

yarn + lerna 配置复杂

对于一个新入门 monorepo 的小白来说,光搞清单独使用 lernayarn + workspace + lerna 的区别,就足够吃一壶的了。

具体来说,首先你需要这么大的 lerna.json

// lerna.json
{"packages": ["packages/*"],"npmClient": "yarn","useWorkspaces": true,"command": {"bootstrap": {"hoist": true}},"version": "0.0.0"
}

yarn 这种已经标配的管理工具竟然让我手动去配置使用,为了效率还要手动打开依赖提升,不开启 workspace 就丧失了使用 yarn 的意义,不提其他自定义配置,光是这些必备的,一连串下来,真是好复杂的模板配置!

不光如此,还需要在 package.json 明确指明 workspace 位置:

// package.json 追加
{"workspaces": ["packages/*"]
}

对于新手来说,这些配置需要接收的信息量实在太多,yarn workspace 是什么?为什么要提升依赖?packages/* 竟然要在两个地方写

为什么使用pnpm可以光速建立好用的monorepo(比yarn/lerna效率高)相关推荐

  1. 哈佛研发出蛇形柔性机器人,复杂地面无脚行走关键在“人工皮肤”

    蛇,可谓最具创造力的动物之一.它们能够快速行动,悄然前进,攀越山地,挤进很小的洞内,甚至可以稍微滑翔一会儿.而且尽管外观与蜥蜴有些相似,但蛇类完全没有四肢. 蛇的创造力给研究人员带来想象力.长期以来, ...

  2. 三维匹配_三维GIS数据融合的基本方法与进展

    点击图片上方蓝色字体"慧天地"即可订阅 文章转载自微信公众号地理信息世界GeomaticsWorld,版权归原作者及刊载媒体所有. 作者信息 华 巍1,2,胡云岗1,2,侯妙乐1, ...

  3. npm、pnpm和yarn使用(官网、安装、命令行、上传自己的包、包版本号详解、更新卸载包、查看所有版本、同等依赖peer、可选依赖optional)

    目录 npm 官网 npm install packageName npm i packagename@版本号 安装git上发布的包 npm ci 注意(对比npm i) npm outdated n ...

  4. 为方便ATS管理建立的一些命令别名

    转载自https://blog.zymlinux.net/index.php/archives/129 玩ats经常需要切换目录什么感觉敲得麻烦了就建立了一些命令别名,就方便多了. 在用户目录下的.b ...

  5. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  6. FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法

    构建瘤胃微生物脲酶的靶向宏蛋白质组方法 中国农业科学院北京畜牧兽医研究所奶业创新团队在奶牛瘤胃微生物脲酶蛋白多样性方面取得新进展,建立了一种分析瘤胃微生物脲酶的靶向宏蛋白质组方法,不仅为揭示瘤胃脲酶蛋 ...

  7. java简单springboot系统_Springboot系列 3 - 建立简单的用户登录系统

    在开始编码前,先建立几个Package(可以按个人习惯命名),如图 1.Controllers 用于存放控制器类 2.Models 用于存放数据实体类 3.Repositories 用于存放数据库操作 ...

  8. (3)数据库的建立和数据表的操作

    mysql下的user表就是存放着登陆的信息,包括账号和密码 在mysql的data文件夹下建立一个数据库,并且建立新的数据表 1.use mysql  #进入mysql文件夹 2.show data ...

  9. 民生银行马坡数据中心基础设施Uptime Mamp;O运营管理体系建立与实施

    01 关于M&O 2008年我行开始筹划建设马坡数据中心,机房管理中心团队参与了整个数据中心从需求分析到运维管理的全生命周期的过程.数据中心的全生命周期包含了需求分析.规划设计.施工安装.测试 ...

最新文章

  1. boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
  2. python编程分析了一下高考那些事,发现了两个之最,原来是这样
  3. python动态柱状图_python – 在Jupyter中使用plotly以离线模式创建动画图表
  4. 三维数组设置索引_10-Unity入门学习之C#基础9「数组」
  5. 比亚迪:2月新能源汽车销量14429辆 同比增长73%
  6. 机器学习实战(python)-Ch02KNN-Notes
  7. 银联再发道歉声明;印度发布吃鸡禁令;甘肃全省校园禁售辣条;波音面临50亿罚款;女子撕扯民警头发罚两百;这就是今天的大新闻。...
  8. 【飞谷六期】爬虫项目4
  9. 数学图形(1.33) 棕子曲线
  10. linux的增强文件夹,在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么...
  11. JEECG Word模板导出教程
  12. linux mint 19 内核4.9,Linux Kernel 4.4.59 LTS/4.9.19 LTS/4.10.7维护版本更新发布
  13. mysql表设计 列命名_MYSQL数据库字段命名及设计规范
  14. IIS7部署网站的一些细节问题。
  15. 软件工程导论团队介绍——信科吴彦组
  16. PHP程序员如何突破成长瓶颈(php开发三到四年)
  17. 终止正在运行的VBS脚本
  18. 基于Java的智能问答系统
  19. 高等数学常用符号大全及符号的含义
  20. Java中NumberFormat格式化数字

热门文章

  1. B站动态转发抽奖脚本+教程
  2. 详解stdin,stdout,stderr
  3. x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs 解决:
  4. python:跳出内循环,继续下一次外循环的写法
  5. MFC_设置对话框背景图片
  6. java 集成 v8_V8 的 Java 封装版本 J2V8
  7. 深入理解最强桌面地图控件GMAP.NET ---离线地图
  8. 深入理解最强桌面地图控件GMAP.NET --- 初用
  9. 用友java笔试_用友Java类笔试题大全
  10. Word处理控件Aspose.Words功能演示:在 Python 中将图像转换为 HTML