Monorepo学习笔记

Monorepo学习笔记

使用 pnpm 配置 monorepo

1、创建项目

mkdir stars-ui && cd stars-ui && pnpm init
mkdir packages docs

2、.gitignore

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*node_modules
dist
dist-ssr
*.local# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?pnpm-lock.yaml

3、package.json

{"name": "@xumeng03/monorepo","private": "true","description": "A Component Library for Vue 3","scripts": {"preinstall": "npx only-allow pnpm","test": "echo \"Error: no test specified\" && exit 1"},"license": "ISC","engines": {"node": ">=18"}
}

4、pnpm-workspace.yaml

packages:- "packages/*"- "docs"- "play"

5、初始化

5.1、docs

pnpm init

docspackage.json如下

{"name": "docs","private": "true","version": "1.0.0","description": "","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC"
}

5.2、packages

for i in components hooks stars-ui themes utils; domkdir $i && cd $ipnpm initcd ..
done

componentshooksthemesutilspackage.json如下

{"name": "@stars-ui/components","version": "1.0.0","description": "","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC"
}

stars-uipackage.json如下

{"name": "@xumeng03/stars-ui","version": "1.0.0","description": "A Component Library for Vue 3","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC"
}

5.3、play

# 根目录执行
pnpm create vite play -template vue-ts

playpackage.json如下

{"name": "play","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite","build": "vue-tsc -b && vite build","preview": "vite preview"},"dependencies": {"vue": "^3.4.37"},"devDependencies": {"@vitejs/plugin-vue": "^5.1.2","typescript": "^5.5.3","vite": "^5.4.1","vue-tsc": "^2.0.29"}
}

6、依赖安装

6.1、根目录依赖

pnpm add -Dw vite
pnpm add -Dw typescript
pnpm add -w vue
pnpm add -w lodash-es

@xumeng03/stars-ui引入作为全局依赖

{"name": "@xumeng03/monorepo","private": "true","description": "A Component Library for Vue 3","scripts": {"preinstall": "npx only-allow pnpm","test": "echo \"Error: no test specified\" && exit 1"},"license": "ISC","engines": {"node": ">=18"},"devDependencies": {"typescript": "^5.5.3","vite": "^5.4.1"},"dependencies": {"lodash-es": "^4.17.21","vue": "^3.4.37","@xumeng03/stars-ui": "workspace:*"},"workspaces": ["packages/*","play","docs"]
}

6.2、docs依赖

按需求添加,我这里目前没有依赖需要安装

6.3、package子包依赖安装

按需求添加,我这里只是在@xumeng03/stars-ui里面引入@stars-ui/components、@stars-ui/hooks、@stars-ui/themes、@stars-ui/utils

{"name": "@xumeng03/stars-ui","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"dependencies": {"@stars-ui/components": "workspace:*","@stars-ui/hooks": "workspace:*","@stars-ui/themes": "workspace:*","@stars-ui/utils": "workspace:*"},"keywords": [],"author": "","license": "ISC"
}

6.4、play依赖

{"name": "play","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite","build": "vue-tsc -b && vite build","preview": "vite preview"},"dependencies": {"vue": "^3.4.37"},"devDependencies": {"@vitejs/plugin-vue": "^5.1.2","typescript": "^5.5.3","vite": "^5.4.1","vue-tsc": "^2.0.29"}
}

6.5、安装依赖

pnpm install

6.6、测试Monorepo

cd play
pnpm run dev

7、发布

待补。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理系列五十》文本分类算法》SVM支持向量机算法原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十SVM支持向量机》算法原理SVM支持向量机》代…

javascript利用for循环输出0-100的数

for循环语句是 for(起始数值&#xff1b;循环条件;自增符&#xff09;&#xff5b; 循环体 &#xff5d; 利用for循环输出1-100的数 代码如下 <script> for(var i1;i<100;i) {document.write(这是第${i}个数<br>) } </script> 这段代码。首先在fo…

JAVA-接口(一万四千字讲解)

目录 一、接口的概念 二、语法规则 三、接口使用 四、接口特性 五、实现多个接口 六、接口间的继承 七、接口使用实例 1.Comparable 2.写一个自己的sort 3.Comparator 八、类的克隆Clonable 1.Clonable接口 2.浅拷贝 3.深拷贝 九、抽象类和接口的区别 十、 Obje…

芯片时钟树评估的关键性能参数

前面有很多文章都介绍了PI性能的影响&#xff0c;也介绍了PSIJ对信号或时钟性能的影响&#xff0c;对于SOC设计&#xff0c;为了更好的理解电源完整性在芯片设计中的重要作用&#xff0c;对芯片的时钟树设计需要足够理解才能更好的明白电源完整性的影响。 时钟分布网络设计一直…

最基本的SELECT...FROM结构

第0种&#xff1a;最基本的查询语句 SELECT 字段名&#xff0c;字段名 FROM 表名 SELECT 1&#xff1b; SELECT 11,3*2&#xff1b; FROM SELECT 11,3*2 FROM DUAL&#xff1b;#dual&#xff1a;伪表 我们可以用它来保持一个平衡 这里我们的值不需要在任何一个表里&#xf…

基于Spring的单点登录SSO实现(redis+JWT+SpringSecurity)

本文介绍了基于Spring的单点登录SSO实现&#xff08;redisJWTSpringSecurity&#xff09; 方法。 一、应用场景 平台包含多个系统应用的&#xff0c;实现只要在一个应用登录一次&#xff0c;就可以访问其他相互信任的应用。常用于多应用平台中&#xff0c;此时常常建立门户网站…

JVM中的GC过程

堆内存结构&#xff1a;在详细讨论GC过程之前&#xff0c;需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;&#xff0c;其中新生代又进一步细分为Eden区&#xff08;Eden Space&a…

9、类和对象

9.1 封装 9.1.1 封装的例子 class Student { public:string name;int age; public:void setName(string name_) {name name_;} }; int main() {Student s1;s1.setName("zhangsan");return 0; }类中的行为都叫做成员&#xff0c;例如成员属性&#xff0c;成员变量&…

Spring Cloud全解析:负载均衡算法

负载均衡算法 集中式负载均衡 在服务的消费方和提供方之间使用独立的LB设施(可以是硬件&#xff0c;如F5&#xff0c;也可以是软件&#xff0c;如Nginx)&#xff0c;由该设施负责把访问请求通过某种策略转发至服务的提供方 进程内负载均衡 将LB逻辑集成到消费方&#xff0c…

Redis篇 - 深入了解查询缓存与缓存带来的问题

引言 在现代Web应用程序中&#xff0c;为了提高数据访问速度和减轻数据库的压力&#xff0c;缓存技术变得越来越重要。Redis作为一款高性能的键值存储系统&#xff0c;在缓存领域有着广泛的应用。然而&#xff0c;随着缓存的引入&#xff0c;一系列新的挑战也随之而来。本文将…

飞速(FS)S5800-48T4S:如何使用MLAG?

MLAG&#xff08;多机箱链路聚合组&#xff09;可实现无缝故障转移并优化带宽利用率&#xff0c;从而增强网络冗余和提高可扩展性。它允许多台交换机作为一个统一实体运行&#xff0c;从而降低停机风险并确保网络运行不中断。飞速&#xff08;FS&#xff09;S5800-48T4S是一款支…

IP学习——Fiveday

设备排错 [R1]display ip interface brief 查看路由器接口的IP地址信息 [R1]display current-configuration int g0/0/1.10 查看路由器接口的IP地址信息 TG---> trunk查看vlan指令:displayvan其中UT--->accessc.vlan确认完成后 即链路层配置完成排查网络层错误 排查终端主…

二维高斯函数的两种形式

第一种形式很常见 多元正态分布 多元正态分布&#xff08;Multivariate Normal Distribution&#xff09;&#xff0c;也称为多变量正态分布或多维正态分布&#xff0c;是统计学中一种重要的概率分布&#xff0c;用于描述多个随机变量的联合分布。 假设有 n n n 个随机变量…

Monkey日志ANR、CRASH、空指针异常及其他异常数据分析

引言 在Android开发过程中&#xff0c;monkey测试是一种常用的随机测试手段&#xff0c;用于模拟用户的各种操作来发现应用中的稳定性问题。通过monkey测试生成的日志文件包含了丰富的信息&#xff0c;包括应用程序崩溃&#xff08;Crash&#xff09;、无响应&#xff08;ANR&…

【LabVIEW学习篇 - 18】:人机界面交互设计02

文章目录 错误处理函数简单错误处理器通用错误处理器清楚错误合并错误错误代码至错误簇转换查找第一个错误 鼠标指针 错误处理函数 在LabVIEW中&#xff0c;是通过错误输入簇和错误输出簇来传递错误信息&#xff0c;可以将底层错误信息传递到上层VI。设计人员需要对不同程度的…

2024 数学建模高教社杯 国赛(C题)| 农作物的种植策略 | 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用等多目标规划等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘籍&#xff0c;我们出发…

过滤器(Filter)和拦截器(Interceptor)

在Web开发中&#xff0c;过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;都是重要的组件&#xff0c;它们都可以对HTTP请求进行预处理、后处理以及一些额外的操作。然而&#xff0c;它们之间在多个方面存在明显的区别 1. 运行位置 过滤器&…

在python项目的docker镜像里使用pdm管理依赖

前言 在 DjangoStarter 项目中&#xff0c;我已经使用 pdm 作为默认的包管理器&#xff0c;不再直接使用 pip 所以部署的时候 dockerfile 和 docker-compose 配置也得修改一下。 dockerfile 首先修改一下 dockerfile ARG PYTHON_BASE3.11FROM python:$PYTHON_BASE# 设置 pytho…

高并发内存池(一):项目介绍与定长内存池的实现

目录​​​​​​​ 项目介绍 池化技术 内存池 内存碎片 malloc工作原理 定长内存池 申请内存 释放内存 定位new VirtualAlloc函数 封装VirtualAlloc 定长内存池的最终代码 项目介绍 项目原型&#xff1a;goole的开源项目tcmalloc&#xff08;Thread-Caching Mal…

9.5 面试题

1、多继承下&#xff0c;地址转换问题&#xff1a; 在 C 中&#xff0c;如果类 C 是多继承自 A 和 B&#xff0c;在执行强制类型转换时&#xff0c;地址值是否发生改变&#xff0c;取决于内存布局和继承方式。具体来说&#xff1a; 1. 标准布局下&#xff08;无虚继承&#x…