lerna.js:monorepos项目管理模式简单实践

简介: lerna.js:monorepos项目管理模式简单实践

解释:

  • monorepos: 把相互依赖的项目组织成多包的形式放在同一个代码仓库里面
  • lerna.js:管理项目的一个工具

文档:

安装lerna

$ pnpm i lerna -g

修改配置 lerna.json,设置包管理工具为:pnpm

{
  "$schema": "node_modules/lerna/schemas/lerna-schema.json",
  "useNx": true,
  "useWorkspaces": true,
  "version": "0.0.0",
  "npmClient": "pnpm"
}

lerna init

# 初始化
$ lerna init

lerna create

# 创建三个新包
$ lerna create  -y animal
$ lerna create -y cat
$ lerna create  -y dog

文件目录

$ tree -I node_modules
.
├── lerna-debug.log
├── lerna.json
├── package-lock.json
├── package.json
├── packages
│   ├── animal
│   │   ├── README.md
│   │   ├── __tests__
│   │   │   └── animal.test.js
│   │   ├── lib
│   │   │   └── animal.js
│   │   └── package.json
│   ├── cat
│   │   ├── README.md
│   │   ├── __tests__
│   │   │   └── cat.test.js
│   │   ├── lib
│   │   │   └── cat.js
│   │   └── package.json
│   └── dog
│       ├── README.md
│       ├── __tests__
│       │   └── dog.test.js
│       ├── lib
│       │   └── dog.js
│       └── package.json
└── pnpm-lock.yaml

lerna list

列出所有的本地包

$ lerna list      
info cli using local version of lerna
lerna notice cli v5.4.3
animal
cat
dog
lerna success found 3 packages

lerna add

添加本地包或者远程包作为包的依赖

# 添加的 animal 作为 dog、cat 的依赖
lerna add animal
# 向 dog 中添加 cat 作为依赖
lerna add cat --scope=dog

lerna link

建立存在依赖关系的包之间的软连接

$ lerna link

建立软链之后,就可以相互引用了

lerna bootstrap

建立相互依赖的包之间的软连接并安装其他的依赖

$ lerna bootstrap

lerna run

在包目录下执行对应的脚本

# 在所有的包目录下执行测试
$ lerna run test
# 在dog 包目录下执行测试
$ lerna run test --scope=dog

lerna clean

移除所有 package 下的 node_modules,除了根目录下的 node_modules

$ lerna clean

参考

Lerna 小白入门


相关文章
|
5月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
6月前
|
前端开发 JavaScript Java
【Java进阶】JavaScript电灯开关实例:从理论到实践
这个例子展示了JavaScript的基本功能,包括操作HTML元素,监听事件,以及改变元素的样式。通过学习和理解这个例子,你可以了解到JavaScript在网页中的应用,以及如何使用JavaScript来创建交互式的网页。
107 13
|
5月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
8月前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
821 44
|
7月前
|
缓存 自然语言处理 JavaScript
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
190 11
|
11月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
11月前
|
JavaScript 前端开发 API
Vue.js 3:深入探索组合式API的实践与应用
Vue.js 3:深入探索组合式API的实践与应用
|
存储 网络架构
Next.js 实战 (四):i18n 国际化的最优方案实践
这篇文章介绍了Next.js国际化方案,作者对比了网上常见的方案并提出了自己的需求:不破坏应用程序的目录结构和路由。文章推荐使用next-intl库来实现国际化,并提供了详细的安装步骤和代码示例。作者实现了国际化切换时不改变路由,并把当前语言的key存储到浏览器cookie中,使得刷新浏览器后语言不会失效。最后,文章总结了这种国际化方案的优势,并提供Github仓库链接供读者参考。
568 0
Next.js 实战 (四):i18n 国际化的最优方案实践
Next.js 实战 (三):优雅的实现暗黑主题模式
这篇文章介绍了在Next.js中实现暗黑模式的具体步骤。首先,需要安装next-themes库。然后,在/components/ThemeProvider/index.tsx文件中新增ThemeProvider组件,并在/app/layout.tsx文件中注入该组件。如果想要加入过渡动画,可以修改代码实现主题切换时的动画效果。最后,需要在需要的位置引入ThemeModeButton组件,实现暗黑模式的切换。
316 0
Next.js 实战 (三):优雅的实现暗黑主题模式

热门文章

最新文章