vue3源码分析-rollup打包monorepo

vue3源码分析-rollup打包monorepo

引言

  • 手写vue3源码——创建项目
  • 手写vue3源码——reactive, effect ,scheduler, stop
  • 手写vue3源码——readonly, isReactive,isReadonly, shallowReadonly
  • 手写vue3源码——ref, computed
  • 本期咋们就先放一放源码,咋们如何打包monorepo应用,主要是源码看累了,打包工具也是一门必须课,所有的源码请查看

    效果

    为了提供大家的学习兴趣,咋们先来看看效果,准备发车,请系好安全带

    cjs 结果预览

    esm 结果预览

    声明文件预览

    正文

    vue3使用的是rollup来打包的,咋们也用rollup来打包咋们的应用,有不了解rollup的请查看官网,monorepo是多个单体仓库合并得到的,那么咋们就先来打包单个仓库,然后再来想办法怎么一键打包全部

    打包shared

    在我项目中,shared仓库是相当与utils函数的集合,用于对外导出一些工具函数,那么咋们可以在本目录下的package.json中安装rollup。 正当我就想在shared目录下面安装rollup插件的时候,我大脑给了个慢着的问号?

    monorepo 是不是可以在跟下面安装依赖,然后子包都可以共享,基于这一特征。我毫不犹豫在根目录下面敲下了下面的命令:

    pnpm add rollup -w -D复制代码

    有了rollup,咋们是不是需要在打包的目录下面来搞个配置文件rollup.config.js,里面咋们写上入口,出口,打包的格式等

    // 由于咋们需要打包成cjs, ems的格式,对外导出一个函数吧[ { input: ‘./src/index.ts’, output: { file: ‘dist/index.esm.js’, format: ‘esm’, }, }, { input: ‘./src/index.ts’, output: { file: ‘dist/index.cjs.js’, format: ‘cjs’, }, } ]复制代码

    然后在本目录下的package.json中加入打包的命令:

    “build”: “rollup -c”复制代码

    nice, 到这了就完了,咋们试一下,结果:

    分析错误可以发现,咋们是用了ts的语法,rollup无法转换ts的语法,需要使用插件了。

    那么rollup转换ts的插件也是有好多种,这里咋们用一个最快的那种,esbuild, rollup-plugin-esbuild

    pnpm add esbuild rollup-plugin-esbuild -w -D复制代码

    关于rollup-plugin-esbuild这个插件,官方的介绍是说:

    esbuild is by far one of the fastest TS/ESNext to ES6 compilers and minifier, this plugin replaces rollup-plugin-typescript2, @rollup/plugin-typescript and rollup-plugin-terser for you. 意思是说,这个插件是目前来说转换ts/esnext到es6是最快的编译和压缩,这个插件可以代替 rollup-plugin-typescript2, @rollup/plugin-typescript and rollup-plugin-terser的集合

    但是如果咋们需要打包非常低版本的代码,那就请查看rollup 实战第三节 打包生产打包低版本的代码.

    言归正传,那么咋们把插件用上,在配置文件上加上插件

    //… 省略其他plugins: [ esbuild({ target: ‘node14’, }), ]复制代码

    再来一次

    通过结果,咋们可以看到已经打包成功了!

    但是咋们是有ts的,肯定还需要生成咋们代码的类型吧,那就使用 rollup-plugin-dts这个来生成

    pnpm add rollup-plugin-dts -w -D复制代码

    rollup-plugin-dts详情请查看

    // 在数组后面在加上一项,{ input: ‘./src/index.ts’, output: { file: ‘dist/index.dts’, format: ‘esm’, }, plugins: [ dts(), ], },复制代码

    然后就可以ok啦,咋们单个项目就完成了

    打包多个

    既然单个是这么写,那么其他的咋们是不是也可以写配置文件呢?对的,没错,可以在对应的单体项目下面写上rollup.config.js来对他们进行打包的配置

    然后咋们在跟目录下面的package.json中加入一行命令:

    “build”: “pnpm -r –filter=./packages/** run build”复制代码

    咋们来拆分下命令

  • pnpm -r 等同于 pnpm –recursive,意思是说在工作区的每个项目中运行命令,不包括根项目,详情查看
  • –filter=./packages/**意思是说,过滤其他文件和文件夹,只使用packages下面的所有文件夹
  • run build 是 pnpm -r run build的后缀,执行package.json中的build指令,详情请查看
  • 合起来的意思是说,依次执行packages里面所有文件夹的package.json的build命令

    优化

    通过上面的方式咋们就可以打包成功了,但是这里咋们还可以进行优化下,每一次打包dist结果都需要手动删除,咋们可以使用 rimraf 这个库来帮我们自动删除

    pnpm add rimraf -d -W复制代码

    然后在每一个子包中修改build的命令

    “build”: “rimraf dist && rollup -c”复制代码

    对比vue3打包

    这里可能有的人会说,vue3仓库都不是这么玩的,的确,vue3仓库的打包流程如下:

    有兴趣的可以取看源码哈,这里给出流程图,想要使用这种方式的就自己实现哈!

    郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    用户投稿
    上一篇 2022年6月15日 15:25
    下一篇 2022年6月15日 15:25

    相关推荐

    • 30个无加盟费的项目(茶颜悦色奶茶店加盟费多少)

      茶颜悦色又爆了,8月18日,茶颜悦色南京门店正式开业,开张不到半小时,门店就人满为患,消费者的购买热情十分高涨,而由于人流量过大造成拥堵,茶颜悦色也不得不暂停营业。 当然,这里面排…

      2022年11月27日
    • cad连续标注快捷键(cad连续标注快捷键)

      本文主要讲的是cad连续标注快捷键,以及和cad连续标注快捷键相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 cad中连续标注快捷键 CAD尺寸标准快捷命令:DL…

      2022年11月27日
    • 净利润率越高越好吗(净利润率多少合适)

      一、持续增收不增利,平均净利润率首次跌入个位数 2021年,增收不增利依旧是行业主流。具体来看,大部分企业营业收入呈增长态势,E50企业平均同比增速达到17.3%,但是利润增速则明…

      2022年11月26日
    • 京东快递跨省几天能到(京东一般多久到货)

      由于觉得京东平台的物流效劳十分的不错,而且商品的质量都比拟有保证。在京东平台购物的话,普通多久时间会到货?下面的内容停止引见。 京东普通多久到货? 详细要看发货地址和你所在的地址的…

      2022年11月26日
    • 地灵绝魂剑(地灵绝魂剑像素)

      今天小编给各位分享地灵绝魂剑的知识,其中也会对地灵绝魂剑像素进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! dnf地灵绝魂剑怎么计算 地灵绝魂剑的附加攻击是…

      2022年11月25日
    • 规范透明促PPP高质量发展——16万亿元大市场迎来新规

      近日,财政部印发《关于进一步推动政府和社会资本合作(PPP)规范发展、阳光运行的通知》,从做好项目前期论证、推动项目规范运作、严防隐性债务风险、保障项目阳光运行四个方面进一步规范P…

      2022年11月25日
    • 推荐3种白手起家的赚钱项目(白手起家赚钱项目有哪些)

      如今社会压力非常的大,家有老少要养活,这些都加速了穷人想要创业的欲望,但是创业路总是那么的艰难,资金就是创业的重头戏,所以选择一个低成本又赚钱的项目是大多数人最期望的了,那么有哪些…

      2022年11月25日
    • 闲鱼运营的4大技巧解析(闲鱼运营怎么做)

      熟悉我又来了,上一次写的文章是爆出风水项目的潜规则,但那个项目已经凉凉了。 这一次我是要教一些小白,你们第一次做互联网的建议做的项目之一,这个项目就是闲鱼卖二手物品赚差价了!!! …

      2022年11月24日
    • 2023年农村创业最好的种植项目有哪些(2023年农村宅基地)

      随着2023年时间的临近,有关农村创业大家也都十分关注。2023年农村创业最好的种植项目有哪些?新的一年农村创业到底做什么最能赚钱呢?今天小编整理了一些非常具有发展潜力的农村种植业…

      2022年11月23日
    • 汕梅高速将改扩建为双向八车道 预计2026年建成通车

      昨日上午,汕梅高速改扩建项目在梅州举行建设动员会,标志着广东省首条山岭重丘区高速公路改扩建项目将全面开工建设。 汕梅高速是广东省东北部南北货运的重要通道,联通粤赣闽三省,承担着粤东…

      2022年11月23日

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息